繰り返し処理中にリストから項目を削除しないでください。また、条件文はあなたが意味することをしません。'other'
の真実性をチェックし、包含のためには'things'
のみをチェックします。これを修正するには、and
に2つの別々のin
チェックを使用してください。
リストは非常に大きいではない場合、あなたはそれを再構築するために、リストの内包表記を使用することができます、それ以外の場合は
entries = [e for e in entries if "other" not in e and "things" not in e]
先頭に、リストの末尾からのループとインデックスで項目を削除します。
for e in words[:]: #words[:] is a copy of words, solves mutation issue while iterating
if 'other' not in e and 'things' not in e: #want words that both don't contain 'other' AND dont contain 'things'
print(e)
words.remove(e)
print(words)
そして:
ここ
for e in entries:
if 'other' or 'things' not in e: #or returns first truthy value, and `if other` is always true. Also, you need and, not or.
entries.remove(e) #mutating the item you are iterating over is bad
print entries
は、上記課題を解決するために改訂されたバージョン、されています。他の人がすでに指摘したように
for i in range(len(entries)-1, -1, -1):
if "other" in entries[i] and "things" in entries[i]:
del entries[i]
また、[this](https://stackoverflow.com/questions/1157106/remove-all-occurrences-of-a-value-from-a-list)はあなたの次のバグになります。 –
誰がこれを再開したのですか?これは**明らかに[this](https://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values)の重複**です –