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