"不在"如果声明无法正常运行

时间:2015-07-20 20:14:15

标签: python list if-statement

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语句的重点是摆脱它们。我试图摆脱这些单词的所有个体实例。我也试过{}而不是(),但是我也没有删除列表中的单个单词。关于我做错了什么的任何想法?

3 个答案:

答案 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]
...