Possible Duplicate:
Remove items from a list while iterating in Python的Python:元組的搜索列表,刪除整個索引
我有一個相當嵌入列表,具體地說,它是元組的列表的列表。爲了簡化事情,整個列表是一個句子列表。在每個句子中,每個單詞都被製成一個元組,其中包含有關該單詞的信息。每個句子中的最後一個元組包含關於說話者的信息,但如果需要的話可以刪除。
我想通過這些元組進行搜索,如果找到某個值,則刪除整個句子。
這裏是一個示例清單:
sentenceList = [[('the', 'det', '1|2|DET'), ('duck', 'n', '2|3|SUBJ'), ('xxx', 'unk', '3|0|ROOT'), ('*MOT', 373)],
[('yyy', 'unk', '1|0|ROOT'), ('*CHI', 375)],
[('what', 'pro', '1|2|OBJ'), ('happen-PAST', 'v', '2|0|ROOT'), ('to', 'prep', '3|2|JCT'), ('the', 'det', '4|5|DET'), ('duck', 'n', '5|3|POBJ'), ('*MOT', 378)],
[('boom', 'int', '1|0|ROOT'), ('*CHI', 379)]]
如果一個句子中包含兩種'xxx'
或'yyy'
,我想刪除整個句子。我試過的代碼是:
wordList = ['xxx','yyy']
for sentence in sentenceList:
for wordTuple in sentence:
for entry in wordTuple:
if entry in wordList:
del sentence
這應該刪除整個句子,即:
[('the', 'det', '1|2|DET'), ('duck', 'n', '2|3|SUBJ'), ('xxx', 'unk', '3|0|ROOT'), ('*MOT', 373)], [('yyy', 'unk', '1|0|ROOT'), ('*CHI', 375)]
然而,這段代碼似乎並沒有被完成的任務。任何想法如何解決它?謝謝!
我猜測問題是你正在從列表中刪除列表中的一個成員('sentenceList'),而你正在遍歷列表。 [這個答案](http://stackoverflow.com/questions/1207406/remove-items-from-a-list-while-iterating-in-python)應該可以幫助你解決這個問題。 – 2012-08-01 19:35:52
謝謝@SamMussmann!我遇到過,但不知道如何適應我的具體情況。 – 2012-08-01 19:42:58
我已經爲您的問題添加了該答案的改編答案。我希望這有幫助。 :-) – 2012-08-01 21:56:06