[英]Iterate over list and sequentially append each element to a set number of new lists
I'm trying to iterate over a list to split it into new lists, with the elements sequentially assigned as shown below, with the first element appended to List1
, the second appended to List2
, and so on, then starting again at List1
for the fifth element, List2
for the sixth element, and so on.我正在尝试迭代一个列表以将其拆分为新列表,按顺序分配元素,如下所示,第一个元素附加到List1
,第二个附加到List2
,依此类推,然后再次从List1
开始第五个元素, List2
为第六个元素,依此类推。
Existing list:现有名单:
main_list = ['apples', 'oranges', 'bananas', 'mangoes', 'kiwis', 'grapes', 'watermelon', 'tangerines', 'plums', 'dragonfruit']
Here's what I want:这就是我想要的:
list1 = ['apples', 'kiwis', 'plums']
list2 = ['oranges', 'grapes', 'dragonfruit']
list3 = ['bananas', 'watermelon']
list4 = ['mangoes', 'tangerines']
I'm sure has been asked elsewhere, but I can't seem to track it down.我肯定在其他地方被问过,但我似乎无法找到它。
Slice the list to get the desired results for each target:对列表进行切片以获得每个目标的所需结果:
list1 = main_list[::4]
list2 = main_list[1::4]
list3 = main_list[2::4]
list4 = main_list[3::4]
For something a little more dynamic and supports an n-number of lists, you can use itertools.cycle
对于更动态并支持 n 个列表的东西,您可以使用itertools.cycle
main_list = ['apples', 'oranges', 'bananas', 'mangoes', 'kiwis', 'grapes', 'watermelon', 'tangerines', 'plums',
'dragonfruit']
number_of_lists = 4
lists = [[] for _ in range(number_of_lists)]
cycler = cycle(lists)
for ml in main_list:
next(cycler).append(ml)
for l in lists:
print(l)
>>> ['apples', 'kiwis', 'plums']
>>> ['oranges', 'grapes', 'dragonfruit']
>>> ['bananas', 'watermelon']
>>> ['mangoes', 'tangerines']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.