if ('SCT', 'OVC', 'CLR') not in words[i]:
list_stat.append(words[i])
i=i+1
print words[i]
else:
i=i+1
我试图在Python中创建一个or
语句来解析列表。关键字的数量比你在if语句中看到的那么长,所以嵌套if语句真的很快就会变得冗余。我是Python的新手,但not in
语句似乎最有效地将我的所有关键字组合在一起。问题是,我一直在尝试将元组与数组进行比较时遇到错误。我也是这样试过的:
if words[i] not in ('SCT', 'OVC', 'CLR'):
list_stat.append(words[i])
i=i+1
print words[i]
else:
i=i+1
两者都没有正常工作。我还应该提到第二种方式运行没有错误,但是没有从我的列表中删除单词。这三个词在我的列表中单独出现多次,即使not in语句的重点是摆脱它们。我试图摆脱这些单词的所有个体实例。我也试过{}而不是(),但是我也没有删除列表中的单个单词。关于我做错了什么的任何想法?
答案 0 :(得分:1)
错误可能是由于缩进错误造成的。除此之外,您可以使用for
循环来简化操作(它将为您执行i=i+1
):
for i in range(len(words)):
if words[i] not in ['SCT', 'OVC', 'CLR']:
list_stat.append(words[i])
print words[i]
不会删除我的列表中的字词
无论哪种方式,您都会填充新列表(list_stat
),而不是从words
删除。
答案 1 :(得分:0)
list_stat.append([x for x in words if x not in ('SCT', 'OVC', 'CLR')])
“根据words
中的每个字词制作一个列表,前提是它不在('SCT', 'OVC', 'CLR')
中。将此新列表附加到list_stat
”
答案 2 :(得分:-1)
你没有解释你想要做什么,但看起来你正在实现集合操作 - 在python中有本机实现
请参阅:https://docs.python.org/2/library/sets.html
具体是:
if set(['SCT', 'OVC', 'CLR']) & words[i] # intersection is not empty - one of the words is in words[i]
...