zip()简介
zip(*iterables)函数可以把 若干个 可迭代的对象 作为参数,打包成一个一个的元组,然后返回由这些元组组成的对象。
- 若干个:这些对象的长度有要求么?
- 没有要求,只要有长度就行,比如a = [1,2,3], b = [1,2,3,4,5],那zip后的元素个数与最短的列表一致。
- 可迭代的对象 :指的是什么呢?
- 列表,元组,字典,字符串,这些都可以。字符串真的也可以。
- 打包:如何打包?
- 就是这些对象都有下标,就把所有对象的同一下标的元素,放进一个一个元组里。
- zip() 中的*iterables就是 不限制数量的可变对象
- 返回的是对象:指的是什么?
- 所谓对象,就是没法打印的东西,一般是这种形式: <zip at 0x1f6e7ba1c00>
- 但我们可以使用list() dict() set() str() 函数 转换成列表、字典、元组、字符串
- 注1:凡是返回时时什么对象的东西,都得转化后才能常规显示。
- 注2:只有当用dict()的时候,要求zip()里,只能有两个可迭代对象!!!!
- 注3:当可迭代对象中有 字典 时,只会把字典的key打包,而不会把value打包。
a = [1,2,3]
b = [4,5,6]
c = (7,8,9,10)
d = {"curry": 24, "luka": 25, "james": 26}
e = 'harden'
------------------------------------------------------------------------
res1 = zip(a, b)
res
<zip at 0x1f6e7bbef00>
------------------------------------------------------------------------
res2 = list(zip(a,b)) res2 = dict(zip(a,b))
res2
[(1, 4), (2, 5), (3, 6)] | {1: 4, 2: 5, 3: 6}
------------------------------------------------------------------------
res3 = dict(zip(a,b,c))
ValueError: dictionary update sequence element #0 has length 3; 2 is required
res4 = list(zip(a, b, c))
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
res5 = list(zip(a,d))
[(1, 'curry'), (2, 'luka'), (3, 'james')]