gpt4 book ai didi

python - 寻找一种同时循环遍历两个不同长度列表的优雅方法

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:05 24 4
gpt4 key购买 nike

我正在寻找同时遍历两个不均匀列表的最优雅/最短/Pythonic 方式。如果较短的列表在某个点结束,它应该从头开始迭代。

到目前为止,我设法用 while 做到了,我认为它很丑,而且太长(出于各种原因我需要尽可能短的代码)。

list1 = ["a", "b", "c"]
list2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

i1 = 0
i2 = 0
while True:
if i2 == len(list2):
break
if i1 == len(list1):
i1 = 0
print(list1[i1], list2[i2])
i1 += 1
i2 += 1

预期的结果应该是这样的。我正在用 while 循环(上面的代码)实现它。但我需要尽可能短的代码:

a 1
b 2
c 3
a 4
b 5
c 6
a 7
b 8
c 9
a 10

最佳答案

zip 两个列表,将最短的一个提供给 itertools.cycle所以它会无限期地重复(直到 list2 结束):

import itertools

list1 = ["a","b","c"]
list2 = [1,2,3,4,5,6,7,8,9,10]

for a,b in zip(itertools.cycle(list1),list2):
print(a,b)

打印:

a 1
b 2
c 3
a 4
b 5
c 6
a 7
b 8
c 9
a 10

(当然不要使用 itertools.zip_longest 因为 cycle 永远不会结束,这会造成无限循环)

关于python - 寻找一种同时循环遍历两个不同长度列表的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581654/

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