在Python 2.7.15
中进行此操作:
dirlist = ['lines-data', 'abgafhb', 'tmp-data.tar', '100', '115.4', '125']
for x in dirlist:
try:
float(x)
except (ValueError, TypeError):
dirlist.remove(x)
print dirlist
导致:
['abgafhb', '100', '115.4', '125']
再次运行for
循环会清除'abgafhb'
。
我想念什么?
P.S。尝试except
,不带参数,结果是相同的。
答案 0 :(得分:2)
您不应修改要迭代的列表。也许将成功的值存储在新列表中。
"scripts": {
...
"debug": "npm run build && functions deploy api --trigger-http --timeout 600s && functions inspect api --port 9229"`
}
答案 1 :(得分:1)
当您修改要遍历的列表时,Python不喜欢它,因为那样一来,它就不知道到达何处并感到困惑。
解决此问题的最简单(但不是最有效)的方法是遍历列表的副本:
dirlist = ['lines-data', 'abgafhb', 'tmp-data.tar', '100', '115.4', '125']
for x in dirlist[:]: # Note the [:]
try:
float(x)
except (ValueError, TypeError):
dirlist.remove(x)
print dirlist