Как попарно вывести два списка?
По условию задачи есть два следующих списка:
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)]
# ----- -- **** ****
- Зачем
int
? - У вас переменные цикла называются также, как и исходные списки
- Между элементами нужно просто вставить запятую (
,
)
Получается такой код:
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))]