Skip to main content
 首页 » 编程设计

python之添加不同长度循环最小的列表

2025年05月04日9thcjp

我有两个列表:

a = [50, 17, 54, 26] 
b = [19,  7,  8, 18, 36, 8, 18, 36, 18, 14] 

我想将 a 的相应元素添加到 b 的元素。当 a 的元素用完时,我想循环通过 a 来提供元素。结果应该是:

c = [69, 24, 62, 44, 86, 25, 72, 62, 68, 31] 

实现它的“Pythonic”方法是什么?

请您参考如下方法:

您可以使用列表理解来添加压缩在一起的两个列表中的元素,并使用 itertools.cycle这样迭代器 a 会根据需要重复自身多次,直到 b 耗尽:

from itertools import cycle 
a = [50, 17, 54, 26] 
b = [19,  7,  8, 18, 36, 8, 18, 36, 18, 14] 
 
[i+j for i,j in zip(cycle(a), b)] 

输出

[69, 24, 62, 44, 86, 25, 72, 62, 68, 31] 

详情

如果您看一下从压缩表达式生成的元组迭代器:

list(zip(cycle(a),b)) 
 
[(50, 19), 
 (17, 7), 
 (54, 8), 
 (26, 18), 
 (50, 36), 
 (17, 8), 
 (54, 18), 
 (26, 36), 
 (50, 18), 
 (17, 14)] 

可以看到a中的元素一直循环直到另一个迭代器耗尽,这使得对交错的元素执行一些操作变得非常容易。