l1 = [1,2,3,4,5]
l2 = ["a","b","c"]
Run Code Online (Sandbox Code Playgroud)
l3 = [(1,"a"),(2,"b"),(3,"c"),(4,"a"),(5,"b")]
Run Code Online (Sandbox Code Playgroud)
所以基本上我想加入两个列表,当它们的长度不同时,我必须通过从头开始重复来传播其他列表中的项目。
使用 zip() 但它对这种情况不利,因为它以相等的长度连接
>>> list(zip(l1,l2))
[(1, 'a'), (2, 'b'), (3, 'c')]
Run Code Online (Sandbox Code Playgroud)
您可以使用itertools.cycle以便zip聚合来自l1和循环版本的元素l2:
from itertools import cycle
list(zip(l1, cycle(l2)))
# [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'a'), (5, 'b')]
Run Code Online (Sandbox Code Playgroud)
cycle当您循环的迭代器与其他迭代器组合或压缩时非常有用,因此只要其他迭代器耗尽,迭代过程就会停止。否则它将无限期地循环(如果只有一个cycle生成器,或者所有其他可迭代对象也是无限的,正如@chepner 指出的那样)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |