Как по очереди вывести элементы из 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 шт):
Это вполне возможно:
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)))]))
zip из двух списков делает один список пар. Пары склеиваются в строки, которые склеиваются в текст сообщения:
bot.send_message(message.chat.id,
'Вот, что требуется:\n' +
'\n'.join(map(' '.join, zip(map(str, list1), list2)))
)