Python builtins.py -- 内建函数
参考文档:https://docs.python.org/3.8/library/functions.html (可以考虑在后面加 #xx 直接跳转,比如 https://docs.python.org/3.8/library/functions.html#zip 直接跳转到 zip() 的用法)
1. abs(x)
用于求绝对值
参数:数字、浮点数或者复数
返回:参数为数字或者浮点数,则返回绝对值;参数为复数,则返回复数与共轭复数乘积的平方根
注意:某复数为 1 + 2j,则共轭复数为 1 - 2j
例子:abs(1 + 2j) = sqrt((1 + 2j)(1 - 2j)) = sqrt(5)=2.236
2. zip(*iterables)
2.1 说明
zip() 接收可迭代对象,将这些 iterable(可迭代对象) 压缩成一个 zip 对象,这个对象是一个 iterator(迭代器),每个元素是一个元祖
参数:可迭代对象,如字符串、列表、元祖、字典、set。参数可以为 0、1、2、...、n 个
返回:返回一个 zip 对象,是一个iterator (迭代器),每个元素为元祖,其中第 n 个元祖的元素分别来自于各 iterable 的第 n 个元素。遇到最短 iterable 停止
注意:没有参数时,返回空列表;一个参数时,迭代器每个元素长度为 1,如 (1, );n (n>=2 且为整数) 个参数时,每个元素长度为 n
2.2 例子
1 li1 = [1, 2, 3, 1] 2 li2 = [5, 6, 7, 8] 3 li3 = ['a', 'b', 'c'] 4 li4 = [[1, 2], 3, 4] 5 str1 = 'python' 6 tup1 = (10, 20, 30, 40, 50) 7 di1 = {'o': 'AA', 'p': 'BB', 'q': 'CC'} 8 9 # 1. 没有参数 10 print('没有参数的情况: ', list(zip())) 11 # 2. 1 个参数 12 print('没有参数的情况: ', list(zip(li1))) 13 # 3. 3个参数 14 print('多个参数的情况: ', list(zip(li1, li2, li3))) 15 # 4. 多种类型数据 16 print('结果为: ', list(zip(li1, str1, tup1, di1)))
1 没有参数的情况: [] 2 没有参数的情况: [(1,), (2,), (3,), (1,)] 3 多个参数的情况: [(1, 5, 'a'), (2, 6, 'b'), (3, 7, 'c')] 4 结果为: [(1, 'p', 10, 'o'), (2, 'y', 20, 'p'), (3, 't', 30, 'q')]
2.3 一些场景
主要是针对转化为字典,当使用 zip 来转化为字典时,需要注意:
1. zip 需要带两个参数,一个作为 key,另一个作为 value,否则 dict 时会报错,如下面第一张图
2. 作为 key 的那个 iterable,元素不能为可变对象,否则 dict 时也会报错,如下面第二张图
3. key 重复时,dict 时会去重,保留最后一个,如下面第三张图 (注意,set 转化时,也会去重)
4. 只能转化到最短 iterable
2.4 *zip()
* 用于把 zip() 返回的结果解压
1 li1 = [1, 2, 3, 1] 2 li2 = [5, 6, 7, 8] 3 li3 = ['a', 'b', 'c'] 4 li4 = [[1, 2], 3, 4] 5 str1 = 'python' 6 tup1 = (10, 20, 30, 40, 50) 7 di1 = {'o': 'AA', 'p': 'BB', 'q': 'CC'} 8 9 print(zip(li1, li2)) 10 print(list(zip(li1, li2))) 11 print(*zip(li1, li2))
1 <zip object at 0x00B23848> 2 [(1, 5), (2, 6), (3, 7), (1, 8)] 3 (1, 5) (2, 6) (3, 7) (1, 8)