尽管使用for循环进行了限定,为什么字符串仍未从列表中删除?

时间:2020-05-21 21:54:41

标签: python-3.x

visited_cities = ["New York", "Shanghai", "Munich", "Toyko",
                  "Dubai", "Mexico City", "São Paulo", "Hyderabad"]

for city in visited_cities:
    if len(city) > 5:
        visited_cities.remove(city)
    else:
        continue
    print(visited_cities)

我确认使用打印(而不是删除)将'Shanghai'识别为大于5的长度。那么,为什么在删除“纽约”,“慕尼黑”,“墨西哥城”和“海德拉巴”的同时,“上海”和“圣保罗”仍保留在列表中?

1 个答案:

答案 0 :(得分:2)

在for循环的开头添加print(city)将有助于进行故障排除。您可以看到您正在for循环中更改可迭代项。这引起了问题。为了解决这个问题,复制列表可以有所帮助。

visited_cities = ["New York", "Shanghai", "Munich", "Toyko",
                  "Dubai", "Mexico City", "São Paulo", "Hyderabad"]

print([x for x in visited_cities if len(x) < 6])

>>> ['Toyko', 'Dubai']
相关问题