首页 > 其他分享 >内置函数与迭代器

内置函数与迭代器

时间:2022-10-14 19:46:41浏览次数:44  
标签:__ 内置 函数 迭代 对象 res iter print

内置函数与迭代器

重要内置函数补充

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

相关文章