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的长度。那么,为什么在删除“纽约”,“慕尼黑”,“墨西哥城”和“海德拉巴”的同时,“上海”和“圣保罗”仍保留在列表中?
答案 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']