2015-07-20 5 views
-4
if ('SCT', 'OVC', 'CLR') not in words[i]: 
    list_stat.append(words[i]) 
     i=i+1 
     print words[i] 
    else: 
     i=i+1  

Я пытаюсь создать оператор or в Python для разбора списка. Количество ключевых слов намного длиннее, чем три, которые вы видите в инструкции 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 

Не работает правильно. Я должен также упомянуть, что второй способ работает без ошибок, но не удаляет слова из моего списка. Три слова появляются по отдельности несколько раз в моем списке, хотя весь смысл не в заявлении заключался в том, чтобы избавиться от них. Я пытаюсь избавиться от всех отдельных экземпляров этих слов. Я также пробовал {} вместо(), но ни один из них не избавится от отдельных слов в моем списке. Любые идеи относительно того, что я делаю неправильно?

+2

Какое значение имеет значение [i]? Мы не волшебники. – felipsmartins

+2

Второй вариант выглядит более вероятным, но ваш отступ необычен в любом случае. – Kevin

+1

Второй выглядит так, как будто он должен работать, за исключением плохих отступов. Что значит «не работает»? – RemcoGerlich

ответ

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.

+2

Целое число, похоже, не служит цели здесь. Вы могли бы использовать слово «слово за слова» –

+0

Вы правы, хотя я не уверен, что это весь код. Кроме того, [имбирь] (http://stackoverflow.com/users/4339728/ginger), похоже, знает об операторе 'in'. – adrianus

-1

Вы не объяснить, что именно your'e пытается сделать, но это, кажется, как вы реализуете набор операций - которые имеют собственную реализацию в питона

см: 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] 
... 
0
list_stat.append([x for x in words if x not in ('SCT', 'OVC', 'CLR')]) 

«Составьте список из каждого слова в words, при условии, что это не в ('SCT', 'OVC', 'CLR'). Добавьте этот новый список к list_stat "