内置函数与迭代器
重要内置函数补充
1. zip() 拉链
zip可以将两个列表内的数据值按照索引位置一一对应组合成元组
eg:
l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8, 9]
res = zip(l1, l2)
print(list(res)) # [(1, 5), (2, 6), (3, 7), (4, 8)]
2. filter() 过滤
filter可以按照某个条件筛选列表内的数据值
eg:
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = filter(lambda x: x > 40, l1)
print(list(res)) # [44, 55, 66, 77, 88]
3.sorted() 升序
给数据集按照升序的方式做排序
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)
print(res) # [11, 12, 21, 22, 32, 53, 64, 76]
常见内置函数
1.abs() 绝对值相当于数学中的|a|
print(abs(-111)) # 111
2.all() 所有数据值对应的布尔值为True结果才为True,否则返回False
3.any() 所有数据值对应的布尔值只要有一个为True结果就为True,否则返回False
4.bin() 转二进制
5.oct() 转八进制
6.hex() 转十六进制
7.int() 转十进制、整形定义关键字
8.bytes() 转bytes类型(二进制)
9.callable() 判断变量名是否可以加括号调用
name = 'zyg'
def index():
pass
print(callable(name)) # False
print(callable(index)) # True
10.chr() 基于ASCII码表将数字转为字母
print(chr('88')) # X
11.ord() 基于ASCII码表将字母转为数字
print(ord('g')) # 103
12.dir() 返回括号内对象能够调用的方法
name = 'zyg'
print(dir(name))
# ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
13.divmod() 括号内放被整除的数字和除数,返回的结果是一个元组里面放整除数和余数
print(divmod(87, 7)) # (12, 3)
14.enumerate() 枚举,将数据集中的每个数据取出并编号,默认从0开始
15.eval() 识别字符串中的python代码并执行,但只能识别简单的代码
16.exec() 可以识别并执行字符串中具有一定逻辑性的代码,比eval强
17.hash() 哈希加密
18.id() 查找内存地址
19.input() 自定义输入
20.isinstance() 判断数据值的数据类型是否与后面输入的数据类型相同
21.map()
22.max()\min()
23.open() 打开文件
24.pow() 幂指数
print(pow(2, 7)) # 128
25.range() 生成一个存放数字的列表
26.round() 四舍五入
print(round(88.8)) # 89
print(round(88.4)) # 88
27.sum() 求和
s1 = [55, 86, 16, 79, 63]
print(sum(s1)) # 299
28.zip() 拉链
可迭代对象
1.什么是可迭代对象
内置有__iter__方法的都称为可迭代对象
'''
就是能够通过点的方式调用__iter__方法
.__iter__
__iter__又称双下iter方法
'''
2.可迭代对象的范围
能够被for循环的都是可迭代对象
是可迭代对象
str list dict tuple set 文件对象
不是可迭代对象
int float bool 函数对象
迭代器对象
1.迭代器对象
由可迭代对象调用__iter__方法产生的
判断一个对象是不是迭代器对象要看是否内置有__iter__和__next__
2.迭代器对象的作用
提供了一种不依赖于索引取值的方式
3.迭代器使用
首先将可迭代对象转为迭代器对象,然后对迭代器对象使用双下next方法
代码实现:
s1 = 'hello' # 可迭代对象
res = s1.__iter__() # 将可迭代对象转为迭代器对象
res1 = res.__next__() # 使用__next__方法迭代取值这也是for循环的本质
print(res1) # 当__next__取不到值时会直接报错
ps:
可迭代对象使用__iter__会变成迭代器对象,迭代器对象再调用__iter__还是迭代器对象,不会有任何变化
for循环内部原理
for 循环结构:
for 变量名 in 可迭代对象:
循环体代码
'''
先将in后面的可迭代对象调用__iter__转为迭代器对象
然后依次让迭代器对象调用__next__取值
一旦__next__取不到值会报错但for循环会自动捕获错误并处理
'''
标签:__,内置,函数,迭代,对象,res,iter,print
From: https://www.cnblogs.com/zyg111/p/16792778.html