Как по очереди вывести элементы из 2 списков?

Создаю тг-бота. Требуется, чтобы он выводил элементы списка "по очереди". По типу:

Бот: "Элемент 1 из Списка 1" "Элемент 1 из Списка 2" "Элемент 2 из Списка 2"

И так далее.

В одном списке значения типа int, в другом строчки

bot.send_message(message.chat.id, "Вот, что требуется:" + "\n".join(str(x) for x in list1) + " ".join(list2))

По этому коду бот выводит таким образом:

Бот: "Элемент 1 из Списка 1" "Элемент 2 из Списка 1" "Элемент 1 из Списка 2" "Элемент 2 из Списка 2"

То есть, он сперва выводит все значения из первого списка, а после все значения из второго списка.

Возможно ли реализовать вывод элементов списка по очереди?


Ответы (2 шт):

Автор решения: Vestalt

Это вполне возможно:

list1 = [1, 2]  # int
list2 = ['"Элемент 1 из Списка 2"', '"Элемент 2 из Списка 2"',
         '"Элемент 3 из Списка 2"']  # str
print(" ".join([(str(list1[i] if i < len(list1) else '') + " " +
                 (list2[i] if i < len(list2) else '')).strip()
                for i in range(max(len(list1), len(list2)))]))

1 "Элемент 1 из Списка 2" 2 "Элемент 2 из Списка 2" "Элемент 3 из Списка 2"

В данном случае:

bot.send_message(message.chat.id, "Вот, что требуется: " +
                 " ".join([(str(list1[i] if i < len(list1) else '') + " " +
                            (list2[i] if i < len(list2) else '')).strip()
                           for i in range(max(len(list1), len(list2)))]))

→ Ссылка
Автор решения: Stanislav Volodarskiy

zip из двух списков делает один список пар. Пары склеиваются в строки, которые склеиваются в текст сообщения:

bot.send_message(message.chat.id,
    'Вот, что требуется:\n' +
    '\n'.join(map(' '.join, zip(map(str, list1), list2)))
)
→ Ссылка