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

标签 python list

我有两个列表:

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/

相关文章:

c++ - 如何创建一个用列表初始化的构造函数?

java - java 是否具有相当于 mysql 的数组列表限制和偏移量?

java - 在 Java 中向列表中添加元素最有效的方法是什么?

python XlsxWriter 文本换行和链接样式

python - 使用 shell 脚本在 python 中收集函数的日志

python - 使用 PTVS、IronPython 和 MongoDB

c# - 编写包含子目录的目录列表<String>

python - 迭代 Python 列表,保留嵌入列表的结构

python - 类型错误 : cannot concatenate a non-NDFrame object

python - 从子进程运行的子进程的乱序输出