Как получить доступ к элементам, используя списки / удвоенные циклы?Решение проблем IndexError. - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь выучить составления списков, и для этого я пытаюсь напечатать четвертую букву для каждого города в следующем списке:

word_list = ["Amsterdam", "Hannover", "Milano", "Paris", "London", "Glasgow", "Dublin", "Tokyo", "Canberra"]

Я думаю, мне нужен здесь двойной цикл for,один для доступа к городам в списке, и один для доступа к буквам каждого города.Однако, когда я пытаюсь поместить это в понимание списка, например:

listcomprehension = [letter[3] for word in word_list for letter in word]
print(listcomprehension)

, я получаю следующую ошибку:

IndexError: string index out of range

Я подумал, что это может быть ошибка с моим пониманием списка(Так как я новичок в этом), поэтому я попытался достичь своей цели, используя обычный двойной цикл for:

for word in word_list:
    for letter in word:
        print(letter[3])

Что я здесь не так делаю?Во всех городах более 4 букв, поэтому я не понимаю, почему происходит эта ошибка.Я довольно новичок в программировании, и я все еще часто путаюсь с использованием двойных циклов for ... Может ли кто-нибудь просветить меня?

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вам не нужны два цикла, вы можете просто сделать это:

word_list = ["Amsterdam", "Hannover", "Milano", "Paris", "London", "Glasgow", "Dublin", "Tokyo", "Canberra"]

for item in word_list:
    print(item[3])

Ошибка в вашем коде состоит в том, что когда вы создаете два цикла for, вы перебираете каждую букву.Каждое письмо хранится в виде строки длиной 1. Поэтому вы не можете позвонить letter[4].

0 голосов
/ 17 октября 2018

letter уже является одной буквой, letter[3] не существует, потому что letter содержит только одну букву.

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

listcomprehension = [word[3] for word in word_list]

или

for word in word_list:
    print(word[3])
...