@Gxth_Nikolai
Программист

Как вывести два списка в python?

У меня есть два списка:
english_words = ['Cat', 'Dog', 'Parrot']
russian_words = ['Кошка', 'Собака', 'Попугай']


И нужно вывести их вот так:
Русское: Кошка / Английское Cat
Русское: Собака / Английское Dog
Русское: Попугай / Английское Parrot

Но у меня результат такой:
Русское: Кошка / Английское Cat
Русское: Собака / Английское Cat
Русское: Попугай / Английское Cat

Вот мой код:
english_words = ['Cat', 'Dog', 'Parrot']
russian_words = ['Кошка', 'Собака', 'Попугай'] 
for russian in russian_words:
    for english in english_words:
        print(f'Русское: {russian} / Английское {english}')
        break


Как мне исправить это ?
  • Вопрос задан
  • 89 просмотров
Решения вопроса 3
kshnkvn
@kshnkvn Куратор тега Python
yay ✌️ t.me/kshnkvn
for rw, ew in zip(russian_words, english_words):
    print(f'Русское: {rw} / Английское: {ew}')


У тебя вложенный цикл каждый раз начинается сначала и после вывода break, итерировать нужно параллельно.
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Можно к первому списку в первом цикле применить enumerate и вместо второго цикла выбирать из второго списка значение по индексу.

Как-то так:
english_words = ['Cat', 'Dog', 'Parrot']
russian_words = ['Кошка', 'Собака', 'Попугай'] 
for id, russian in enumerate(russian_words):
    english = english_words[id]
    print(f'Русское: {russian} / Английское {english}')
Ответ написан
@Vindicar
Потому что у тебя вложенный цикл.
Ты сначала для первого слова в russian_words прогоняешь все слова в english_words.
Потом для второго, потом для третьего, и так далее.
Ну, точнее, прогонял бы - если бы не break. Так прогоняешь только первое английское слово.

Тебе вместо этого нужно брать по одному слову из каждого списка. Читай про встроенную функцию zip() в питоне (не имеет отношения к архивации).

Код не привожу, сам осилишь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы