Вложенные циклы и кортежи - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь заставить мой код распечатать каждое значение на новом

cats = ("Tiger","Lion","Cheetah")
canids = ("Dog","Wolf","Fox")
reptiles = ("Snake","Crocodile","Iguana")
animals = (cats, canids,reptiles)
for i in animals:
    for j in [0,-1]:
        print(i[j])

но когда я запускаю его, он не включает в себя вторые значения списков,

Tiger
Cheetah
Dog
Fox
Snake
Iguana

Ответы [ 4 ]

0 голосов
/ 11 сентября 2018

Самое основное изменение, которое вы можете внести в свой код, - это просто изменить эти строки

for i in animals:
    for j in i:
        print(j)

Та же концепция, что и другие, предоставили лишь минимальные корректировки того, что у вас уже есть.

0 голосов
/ 11 сентября 2018

Если вы хотите перебрать диапазон индекса, вам нужно использовать range.В противном случае i принимает только значения 0 и -1.

for i in animals:
    for j in range(0, len(i)): # Note the use of `range` here
        print(i[j])

Хотя, поскольку i само по себе является tuple, вы можете перебирать его напрямую.Здесь я переименовал i в family для удобства чтения.

for family in animals:
    for animal in family:
        print(animal)

Оба имеют следующий вывод.

Tiger
Lion
Cheetah
Dog
Wolf
Fox
Snake
Crocodile
Iguana
0 голосов
/ 11 сентября 2018

Вы можете цепочка разные итерации

from itertools import chain
list(chain(*animals))

Вывод

['Tiger',
 'Lion',
 'Cheetah',
 'Dog',
 'Wolf',
 'Fox',
 'Snake',
 'Crocodile',
 'Iguana']
0 голосов
/ 11 сентября 2018

j будет 0 и -1, то есть первое и последнее значение при индексации списка.

Вы можете просто

cats = ("Tiger", "Lion", "Cheetah")
canids = ("Dog", "Wolf", "Fox")
reptiles = ("Snake", "Crocodile", "Iguana")
animal_lists = (cats, canids, reptiles)
for animal_list in animal_lists:
    for animal in animal_list:
        print(animal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...