如何解决Python列表迭代耗尽
我如何同时迭代两个列表,一个列表比第二个大。所以第二个就完蛋了。我想再次开始较小的列表,直到较大的列表用完
_list = [ 19,74,544,39,00,34,44,593,33,2123,22]
_list1 = [0,1,2,3,4]
我尝试过的事情:
我使用了 itertools.zip_longest,但我不知道在填充值中使用什么。
需要的输出:
我想要的输出:(19,0),(74,1) ----- (34,5) (44,0) (593,1)
直到更大的列表耗尽。
解决方法
一个列表比第二个大。所以第二个就完蛋了。我想再次开始较小的列表,直到较大的列表用完
您可以按照以下方式组合 itertools.cycle
和 zip
import itertools
li1 = [19,74,544,39,00,34,44,593,33,2123,22]
li2 = [0,1,2,3,4]
for i in zip(li1,itertools.cycle(li2)):
print(i)
输出
(19,0)
(74,1)
(544,2)
(39,3)
(0,4)
(34,0)
(44,1)
(593,2)
(33,3)
(2123,4)
(22,0)
,
类似于@Daweo 的回答:
_list = [ 19,22]
_list1 = [0,4]
_merged = [(v,_list1[i % len(_list1)]) for i,v in enumerate(_list)]
print(_merged)
应该给你:
[(19,0),(74,1),(544,2),(39,3),(0,4),(34,(44,(593,(33,(2123,(22,0)]
,
更容易理解的东西。 哪个列表更大并不重要,代码会处理它。
list1 = [ 19,22]
list2 = [0,4]
len1 = len(list1)
len2 = len(list2)
lenMax = max(len1,len2)
for i in range(lenMax):
print("({},{})".format(list1[i%len1],list2[i%len2]),end=",")
print()
,
你可以试试 itertools.cycle:
result_list = []
cycle_list = itertools.cycle(shorter_list)
for i in loner_list():
result_list.append((i,next(cycle_list))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。