我有两个列表:
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
中的元素一直循环直到另一个迭代器耗尽,这使得对交错的元素执行一些操作变得非常容易。
关于python - 添加不同长度循环最小的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630318/