Как попарно вывести два списка?

По условию задачи есть два следующих списка:

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]

Необходимо перебрать эти списки одним циклом и в каждой итерации выводить их элементы следующим образом:

'1,4'
'2,5'
'3,6'

Нашла следующее решение:

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]
res=[(int(str(lst1)+str(lst2))) for lst1,lst2 in zip(lst1,lst2)]
for i in res:
    final=[]
    t=i
    while t:
        f=t%10
        t//=10
        final+=str(f)
        final.reverse()
        final2=''.join(final)
    print(final2)

Однако оно мне не нравится: ощущается вымученным и тяжеловесным. Есть ли какие-то более грациозные способы решения этой задачи ?


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

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

Вы уже почти решили задачу в этом выражении

res=[(int(str(lst1)+str(lst2))) for lst1,lst2 in zip(lst1,lst2)]
#    -----                   --     **** ****
  1. Зачем int?
  2. У вас переменные цикла называются также, как и исходные списки
  3. Между элементами нужно просто вставить запятую (,)

Получается такой код:

res=[str(a)+','+str(b) for a,b in zip(lst1,lst2)]
#          ++++            * *

PS: - - убрано, + - добавлено, * - изменено

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

Консольная программка:

import os

lst1 = [1, 2, 3]
lst2 = [4, 5, 6]

[print([lst1[i], lst2[i]]) for i in range(len(lst1))]

os.system("pause")

Если нужно именно такое: '1, 4' зачем-то вместо удобных для выполнения операций списков, тогда ключевая строка будет выглядеть так:

[print(f"{lst1[i]}, {lst2[i]}") for i in range(len(lst1))]
→ Ссылка