Python中5个内置函数
本文中介绍Python
中5
个高阶内置函数,它们不仅能够帮助我们了解Python
的数据结构,同时也能加快数据处理的速度,体会到Python
的强大。
- zip
- filter
- enumerate
- reversed/reverse
- eval
zip
引例
首先,我们先来学习一个非常强大的内置函数:zip
。通过一个例子来引出zip
的使用:
需求:如果我们想对两个列表对应位置上的数字一一求和,该如何操作?
1 | x = [1,2,3] |
- for循环实现
- zip实现
具体实现过程:
查看使用文档
1 | help(zip) |
zip接受一个序列
- 空序列
- 接受列表、元组、集合、字符串
zip接受多个序列
接受列表、元组、集合、字符串的任意组合:
1 | ## 列表、元组、集合、字符串的随意组合 |
zip处理不同长度
上面的多个元素的长度都是相同的,下面的例子来展示zip
处理不同长度的序列。
我们发现:zip会选择最小的序列的长度进行合并
filter
filter
本身是过滤
的意思:就是将那些不符合我们要求的数据直接过滤舍弃掉,剩下那些符合要求的数据
查看帮助文档
将序列中的每个元素传递给函数,执行的结果为True
或者False
,将结果为True
的元素放入新的列表中
返回的是filter
对象。如果想看具体的数据,需要使用list
来展开
1 | help(filter) |
使用自定义函数
使用匿名函数lambda
直接筛选条件
1 | list(filter(lambda x: x>1, [0,1,9,-4,8,100])) |
具体结果为:
[9, 8, 100]
字符筛选
1 | list(filter(lambda x: x!="shenzhen", ["guangzhou","shanghai","shenzhen","changsha"])) # 筛选不满足要求的字符串 |
['guangzhou', 'shanghai', 'changsha']
enumerate
enumerate
是Python
的一个重要内置函数,返回的是可迭代序列的元素和下标,对列表、集合、字典、字符串等都适用的。
在Python
的for
循环中使用的非常广泛。
如果想查看结果,需要使用list函数来进行显示
查看帮助文档
1 | help(enumerate) |
用于列表、集合、元组、字符串、字典
reversed
reversed()
函数是返回序列seq
的反向访问的迭代器。
参数可以是列表,元组,字符串,不改变原对象
均可。下面通过具体的例子来说明:
查看帮助文档
1 | help(reversed) |
用于列表
用于元组
用于字符串
reverse
用于对列表中的元素反向排序,方法没有返回值,只是对列表中的元素进行反向排序
只针对列表!!!!!!
demo
集合不能用reverse
方法只针对列表
1 | # 集合反向 |
eval
语法
eval直接返回传入字符串的表达式的结果,语法为:
1 | eval(expression[, globals[, locals]]) |
下面通过几个例子来直接讲解该方法的使用
例子
字符串和列表、字典、集合的转化
带上参数
三个参数的意义:
-
expression : 字符串
-
globals : 变量作用域,全局命名空间;如果被提供,则必须是一个字典对象
-
locals : 变量作用域,局部命名空间;如果被提供,可以是任何映射对象
当它和globals中有重复的部分时,locals里的定义会覆盖掉globals中的:当globals和locals中有冲突的部分时,locals有决定权。
如果locals没有被 提供的话,则默认为globals。
理解expressions
1 | s = "abcd" |
1 | # eval先将‘s’的引号剥去,得到s.不可以进行计算,开始查找s是否是一个变量的名字,查找到s是一个字符串,所以程序输出了s中的内容 |
单引号和双引号区别
最外层一定要使用单引号