gpt4 book ai didi

python - 迭代两个不同长度的生成器,其中一个环绕

转载 作者:行者123 更新时间:2023-11-28 19:35:50 26 4
gpt4 key购买 nike

无论我尝试什么,我似乎都无法用我的大脑实现这一点,但必须有一种方法来映射生成器函数。

例如,如果我想将列表 [1,2,3,4,5,6,7,8,9,10] 中的每个成员与列表 [1,2,3] 中的相应成员相乘] 所以在 [1,2,3] 列表用完后它将重新启动:

   [1  2  3  4  5  6  7  8  9  10]

x [1 2 3 1 2 3 1 2 3 1 ]
------------------------------------
[1 4 9 4 10 18 7 16 27 10]

如果您不知道 [1,2,3,4,5,6,7,8,9,10] 列表的长度,您会怎么做?

最佳答案

itertools module是你的 friend 。一种方法是使用 itertools.cycle 循环第二个列表:

>>> import itertools
>>> a = range(1, 11)
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b = itertools.cycle([1,2,3])
>>> b
<itertools.cycle object at 0x1004be830>
>>> ans = [i*j for i,j in zip(a,b)]
>>> ans
[1, 4, 9, 4, 10, 18, 7, 16, 27, 10]

它利用了当 a 用完时 zip 停止绘制术语的事实。

关于python - 迭代两个不同长度的生成器,其中一个环绕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com