Python 列表迭代耗尽
Python list iteration exhaustion
如何同时遍历两个列表,一个列表比第二个大。所以第二个用尽。我想重新开始较小的列表,直到较大的列表用完
_list = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
_list1 = [0, 1, 2, 3, 4]
我尝试过的事情:
我用了itertools.zip_longest但是我不知道在fillvalue中使用什么。
需要输出:
我想要的输出:(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)
你可以试试itertools.cycle:
result_list = []
cycle_list = itertools.cycle(shorter_list)
for i in loner_list():
result_list.append((i, next(cycle_list))
类似于@Daweo的回答:
_list = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
_list1 = [0, 1, 2, 3, 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, 0), (44, 1), (593, 2), (33, 3), (2123, 4), (22, 0)]
更容易理解的东西。
哪个列表更大并不重要,代码会处理它。
list1 = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
list2 = [0, 1, 2, 3, 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()
如何同时遍历两个列表,一个列表比第二个大。所以第二个用尽。我想重新开始较小的列表,直到较大的列表用完
_list = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
_list1 = [0, 1, 2, 3, 4]
我尝试过的事情:
我用了itertools.zip_longest但是我不知道在fillvalue中使用什么。
需要输出:
我想要的输出:(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)
你可以试试itertools.cycle:
result_list = []
cycle_list = itertools.cycle(shorter_list)
for i in loner_list():
result_list.append((i, next(cycle_list))
类似于@Daweo的回答:
_list = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
_list1 = [0, 1, 2, 3, 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, 0), (44, 1), (593, 2), (33, 3), (2123, 4), (22, 0)]
更容易理解的东西。 哪个列表更大并不重要,代码会处理它。
list1 = [ 19 , 74, 544, 39, 00, 34, 44, 593, 33, 2123, 22]
list2 = [0, 1, 2, 3, 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()