如何使用列表理解/双 for 循环访问元素?问题解决IndexError。

How to access elements using list comprehensions / double for-loops? Problem solving IndexError.

我正在尝试学习列表理解,为此我正在尝试打印以下列表中每个城市的第四个字母:

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 循环时我仍然经常感到困惑......有人可以启发我吗?

letter已经是一个字母,letter[3]不存在,因为letter只包含一个字母。

不需要两个循环,因为字符串可以被索引。

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

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

你不需要两个循环你可以简单地这样做:

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

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

您的代码中的错误是,当您创建两个 for 循环时,您遍历了每个字母。每个字母都存储为长度为 1 的字符串。因此您不能调用 letter[4].