Я пытаюсь удалить кортеж из списка. Если первый элемент в списке равен «-NONE-», я хочу удалить весь кортеж. Я продолжаю ошибаться, когда я пробую разные вещи. Вот что у меня есть:Удаление кортежей из списка
def filter(sent):
for tuple in sent:
if tuple[1] == "-NONE-":
sent.remove(sent.index(tuple))
Я использую этот тест, чтобы вызвать метод:
filter([('uh', 'UH'), ('i', 'PRP'), ('think', 'VBP'), (',', ','), ('*0*', '-NONE-'), ('it', 'PRP'), ("'s", 'BES'), ('because', 'IN'), ('i', 'PRP'), ('get', 'VBP'), ('*', '-NONE-'), ('to', 'TO'), ('be', 'VB'), ('something', 'NN'), ('that', 'WDT'), ('i', 'PRP'), ("'m", 'VBP'), ('not', 'RB'), ('*T*', '-NONE-'), ('.', '.')])
, но я получаю эту ошибку:
Traceback (most recent call last):
File "<pyshell#273>", line 1, in <module>
filter([('uh', 'UH'), ('i', 'PRP'), ('think', 'VBP'), (',', ','), ('*0*', '-NONE-'), ('it', 'PRP'), ("'s", 'BES'), ('because', 'IN'), ('i', 'PRP'), ('get', 'VBP'), ('*', '-NONE-'), ('to', 'TO'), ('be', 'VB'), ('something', 'NN'), ('that', 'WDT'), ('i', 'PRP'), ("'m", 'VBP'), ('not', 'RB'), ('*T*', '-NONE-'), ('.', '.')])
File "<pyshell#272>", line 4, in filter
sent.remove(sent.index(tuple))
ValueError: list.remove(x): x not in list
Хорошо поймать. Я не заметил, что он удалял предметы из того же списка, что и итерации. –