|
|
51CTO旗下网站
|
|
移动端

这3个高级Python函数,不能再被你忽略了!

Python其实也可以带来很多乐趣。重新审视一些一开始并不被人们熟知的内置函数并没有想象中那么难,但为什么要这么做呢?今天,本文就来仔细分析3个在日常工作中或多或少都会用到、但是大部分时间都被忽略的Python函数。

作者:读芯术来源:读芯术|2019-11-06 15:14

Python其实也可以带来很多乐趣。重新审视一些一开始并不被人们熟知的内置函数并没有想象中那么难,但为什么要这么做呢?今天,本文就来仔细分析3个在日常工作中或多或少都会用到、但是大部分时间都被忽略的Python函数。

虽然它们可能不会节省大量的时间(如果了解了背后的具体逻辑),但是会使代码看起来更简洁明了。也许这听起来没什么大不了的,但长久来看,可以使读者受益匪浅。从第一个函数开始吧!

这3个高级Python函数,不能再被你忽略了

1. map()

map()是一个内置的Python函数,用于将一个函数应用于元素序列(如列表或字典)。它可能是进行数据操作的最简单易读的方法。

下面的示例旨在求出列表中数字的平方数。首先,必须明确所使用的函数。接下来,笔者展示并对比了使用map()和不使用map()的方法,即python和非python的方法。

  1. nums = [1, 2, 3, 4, 5]#   
  2.  
  3. this function will calculate square 
  4. def square_num(x):  
  5.     return x**2  
  6.  
  7. # non-pythonic approach 
  8. squares = [] 
  9. for num in nums: 
  10.     squares.append(square_num(num)) 
  11.   
  12. print('Non-Pythonic Approach: ', squares)  
  13.  
  14. # pythonic approach 
  15. x = map(square_num, nums) 
  16. print('Pythonic Approach: ', list(x)) 

输出本质上是相同的,但python方法明显更加简洁,过程也不需要循环。

2. zip ()

这3个高级Python函数,不能再被你忽略了

zip()是笔者最中意使用的函数之一。它允许用户同时迭代两个或多个列表。这个功能在处理日期和时间问题时都十分有用。

例如,如果每天在工作中使用它的话,当用户就有第一个属性时表示该事件的开始时间,当有第二个属性时表示该事件的结束时间。进一步想想,工作中总是需要计算事件之间的时间差的,而zip是迄今为止最简单的实现方法。

范例中创建了两个包含数字的列表,任务是对相应的元素求和:

  1. first = [1, 3, 8, 4, 9] 
  2.  
  3. second = [2, 2, 7, 5, 8]  
  4.  
  5.  
  6. # Iterate over two or more list at the same time 
  7.  
  8. for x, y in zip(firstsecond): 
  9.  
  10.     print(x + y) 

这样既简单又干净。

3. filter()

filter()函数在某种程度上类似于map()函数——也是将一个函数应用于某个序列,不同之处在于filter()只返回值为True的元素。

在如下的示例中,笔者创建了一个任意数字列表和一个函数,如果该数字是偶数,该函数将返回到True。同样,笔者将演示如何以非python和python方式执行该操作。

  1. numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
  2.  
  3. # Will return true if input number is even 
  4. def even(x): 
  5.     return x % 2 == 0  
  6.  
  7. # non-pythonic approach 
  8. even_nums = [] 
  9. for num in numbers: 
  10.     if even(num): 
  11.         even_nums.append(num) 
  12.   
  13. print('Non-Pythonic Approach: ', even_nums)  
  14.  
  15. # pythonic approach 
  16. even_n = filter(even, numbers) 
  17. print('Pythonic Approach: ', list(even_n)) 

同样,python方法更简洁、更可读——这是读者学会后会终身受益的东西。

【编辑推荐】

  1. Python数据可视化:箱线图多种库画法
  2. 用 Python 分析招聘岗位,结果 Python 薪资竟然垫底。。。
  3. 新版Kite:实时补全代码,Python之父都发声力挺!
  4. Python数据分析必知必会:TGI指数
  5. Python几行代码,就能预测未来孩子的长相?强大的人工智能
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

骨干网与数据中心建设案例

骨干网与数据中心建设案例

高级网工必会
共20章 | 捷哥CCIE

337人订阅学习

中间件安全防护攻略

中间件安全防护攻略

4类安全防护
共4章 | hack_man

135人订阅学习

CentOS 8 全新学习术

CentOS 8 全新学习术

CentOS 8 正式发布
共16章 | UbuntuServer

280人订阅学习

读 书 +更多

数据库系统工程师考试全程指导

为了满足广大考生的需要,我们组织了参与过多年资格考试命题或辅导的教师,以新的考试大纲为依据,编写了《数据库系统工程师考试全程指导》...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微