0
我想删除不匹配给定正则表达式的列表中的所有元素。我使用下面的代码:列表元素与奇数索引跳过迭代,为什么?
import json
import re
skus = [u'12', u'344', u'56', u'PSJAI12345', u'57']
pattern = re.compile('([A-Z]{5})(\d{5})')
for sku in skus:
if pattern.match(sku):
print("skip")
else:
skus.remove(sku)
print json.dumps(skus)
输出是:
["344", "PSJAI12345"]
预期产量为:
["PSJAI12345"]
好像奇数索引项在某种程度上跳过迭代(skip
当PSJAI12345
与正则表达式匹配时,未打印)。我不明白为什么。请有人解释一下这里发生了什么。
您正在修改循环中的列表。不建议这样做,如有必要,需要仔细调试。 – simonzack 2014-09-20 11:06:21