Python其实也可以带来很多乐趣。重新审视一些一开始并不被人们熟知的内置函数并没有想象中那么难,但为什么要这么做呢?今天,本文就来仔细分析3个在日常工作中或多或少都会用到、但是大部分时间都被忽略的Python函数。
在武江等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都做网站 网站设计制作按需定制,公司网站建设,企业网站建设,品牌网站设计,营销型网站建设,成都外贸网站制作,武江网站建设费用合理。
虽然它们可能不会节省大量的时间(如果了解了背后的具体逻辑),但是会使代码看起来更简洁明了。也许这听起来没什么大不了的,但长久来看,可以使读者受益匪浅。从第一个函数开始吧!
[[281478]]
1. map()
map()是一个内置的Python函数,用于将一个函数应用于元素序列(如列表或字典)。它可能是进行数据操作的最简单易读的方法。
下面的示例旨在求出列表中数字的平方数。首先,必须明确所使用的函数。接下来,笔者展示并对比了使用map()和不使用map()的方法,即python和非python的方法。
- nums = [1, 2, 3, 4, 5]#
- this function will calculate square
- def square_num(x):
- return x**2
- # non-pythonic approach
- squares = []
- for num in nums:
- squares.append(square_num(num))
- print('Non-Pythonic Approach: ', squares)
- # pythonic approach
- x = map(square_num, nums)
- print('Pythonic Approach: ', list(x))
输出本质上是相同的,但python方法明显更加简洁,过程也不需要循环。
2. zip ()
[[281479]]
zip()是笔者最中意使用的函数之一。它允许用户同时迭代两个或多个列表。这个功能在处理日期和时间问题时都十分有用。
例如,如果每天在工作中使用它的话,当用户就有第一个属性时表示该事件的开始时间,当有第二个属性时表示该事件的结束时间。进一步想想,工作中总是需要计算事件之间的时间差的,而zip是迄今为止最简单的实现方法。
范例中创建了两个包含数字的列表,任务是对相应的元素求和:
- first = [1, 3, 8, 4, 9]
- second = [2, 2, 7, 5, 8]
- # Iterate over two or more list at the same time
- for x, y in zip(first, second):
- print(x + y)
这样既简单又干净。
3. filter()
filter()函数在某种程度上类似于map()函数——也是将一个函数应用于某个序列,不同之处在于filter()只返回值为True的元素。
在如下的示例中,笔者创建了一个任意数字列表和一个函数,如果该数字是偶数,该函数将返回到True。同样,笔者将演示如何以非python和python方式执行该操作。
- numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- # Will return true if input number is even
- def even(x):
- return x % 2 == 0
- # non-pythonic approach
- even_nums = []
- for num in numbers:
- if even(num):
- even_nums.append(num)
- print('Non-Pythonic Approach: ', even_nums)
- # pythonic approach
- even_n = filter(even, numbers)
- print('Pythonic Approach: ', list(even_n))
同样,python方法更简洁、更可读——这是读者学会后会终身受益的东西。
本文题目:这3个高级Python函数,不能再被你忽略了!
文章位置:http://www.shufengxianlan.com/qtweb/news31/513731.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联