Функция возвращающая список, состоящий из элементов двух списков
Всем привет.
Есть два списка:
my_list_a = [1, 2, 3]
my_list_b = [11, 22, 33]
Для них нужна функция, которая будет принимает в качестве аргументов эти два списка, а возвращает список, состоящий из элементов этих двух списков, при чем первый элемент списка - первый элемент первого аргумента, второй элемент списка - первый элемент второго списка, третий элемент - второй элемент первого списка, четвертый - второй элемент второго аргумента и т.д.
т.е для аргументов [1, 2, 3] и [11, 22, 33] функция должна вернуть:
new_list = [1, 11, 2, 22, 3, 33]
Приложение моей попытки:
my_list_a = [1, 2, 3]
my_list_b = [11, 22, 33]
def list_gen(my_list_a, my_list_b):
combined_list = [my_list_a, my_list_b]
new_list = [i for sublist in combined_list for i in sublist]
return new_list
print(list_gen(my_list_a, my_list_b))
Выводит:
new_list = [1, 2, 3, 11, 22, 33]
Возможно надо добавить логику в функцию или для это задачи подойдет генераторов последовательностей?
Начал изучать программирование недавно, многих вещей еще не знаю. Буду благодарен, если кто-то объяснит как сделать то, что мне нужно или хотя-бы даст ссылку где можно почитать на тему вопроса. Заранее спасибо.
Ответы (3 шт):
Относительно "объяснит как сделать то, что мне нужно или хотя-бы даст ссылку где можно почитать на тему вопроса.":
Почитайте темы ниже. Это три темы покроют все основные задачи данного упражнения. Алгоритм простой - из основного кода вызываете функцию и в цикле перебираете аргументы, идя по обоим спискам и формируя финальный список. Изучив материалы ниже, вы должны с этим справиться. Удачи!
Использование списков: https://docs-python.ru/tutorial/ispolzovanie-spiskov-list-python/
Функции: https://docs-python.ru/tutorial/opredelenie-funktsij-python/
Циклы: https://docs-python.ru/tutorial/tsikly-upravlenie-vetvleniem-python/
P.s. И запомните этот сайт - это основная документация Python. Еще лучше, если на основном сайте читать по-английски:
Для параллельного перебора двух и более списков в питоне наиболее удобно использовать функцию zip. Фактически, нужно просто добавить к вашему коду в нужном месте вызов этой функции (ну и там ещё скобки поменять), и ваш код будет выдавать то, что нужно.
есть очень полезная библиотека, возможно она поможет и вам:
from more_itertools import interleave
>>> list(interleave(my_list_a, my_list_b))
# [1, 11, 2, 22, 3, 33]
если интересно то вот документация