import re
list1=['abc','oops','#exclude=10','exclude=java* kln*','smith','johns']
regex = re.compile('.*exclude.*')
okay_items = [x for x in list1 if not regex.match(x)]
print(okay_items)
list1=['abc','oops','#exclude=10','exclude=java* kln*','smith','johns']
new_ls = [list1.index(x) for x in list1 if 'exclude' in x]
for i in reversed(new_ls):
list1.pop(i)
print(list1)
你经历这种行为的原因是你在迭代它的时候正在变异。当你弹出
#exclude=10
从list1
,x == 2
弹出元素后现在
x
增加到3
,但是在弹出之后list1[3]==smith
,而您希望它是exclude=java* kln*
,就像您的原始版本list1
。你知道吗这里有一个简单的解决方案:
在您的解决方案中,您使用了pop()并根据documentation
因为当删除第一个元素列表时,它是元素,这就是为什么会发生这种情况。你知道吗
你可以试试这是:-
相关问题 更多 >
编程相关推荐