【发布时间】:2017-08-12 21:51:59
【问题描述】:
如果字符数为 5 或更少,我想从列表中删除每个城市。
cities = ["New York", "Shanghai", "Munich", "Toyko", "Dubai"]
j = 0
for i in cities:
if len(i) <= 5:
del cities[j]
j += 1
只删除第一个不超过 5 个字符的城市。但不是第二个。
我也试过这个:
i = 0
while i < len(cities):
if len(cities[i]) <= 5:
del cities[i]
i += 1
但它给了我同样的结果!!
更新: 最简单的方法就是添加一个切片:
for i in cities[:]:
if len(i) <= 5:
cities.remove(i)
# output: ["New York", "Shanghai", "Munich"]
【问题讨论】:
-
您在迭代列表时更改了列表,这会导致问题。
-
谢谢@Kasramvd 但那该怎么做呢?还有更好的方法吗?
-
你应该使用列表理解:
[i for i in cities if len(i) >= 5] -
谢谢@Kasramvd 感谢!
标签: python python-3.x list