Перебор списка и последовательное добавление каждого элемента к заданному количеству новых списков

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь выполнить итерацию по списку, чтобы разделить его на новые списки, с элементами, последовательно назначенными, как показано ниже, с добавлением первого элемента List1 , второго добавленного к List2 и так далее, затем снова начиная с List1 пятого элемента, List2 для шестого элемента и так далее.

Существующий список:

 main_list = ['apples', 'oranges', 'bananas', 'mangoes', 'kiwis', 'grapes', 'watermelon', 'tangerines', 'plums', 'dragonfruit']
 

Вот что я хочу:

 list1 = ['apples', 'kiwis', 'plums']
list2 = ['oranges', 'grapes', 'dragonfruit']
list3 = ['bananas', 'watermelon']
list4 = ['mangoes', 'tangerines']
 

Я уверен, что меня спрашивали в другом месте, но, похоже, я не могу его отследить.

Ответ №1:

Нарежьте список, чтобы получить желаемые результаты для каждой цели:

 list1 = main_list[::4]
list2 = main_list[1::4]
list3 = main_list[2::4]
list4 = main_list[3::4]
 

Ответ №2:

Для чего-то более динамичного и поддерживающего 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']