无法从列表中删除项目

时间:2016-01-08 20:16:25

标签: python list python-3.x

我有名单:

['ammassuladu', 'papa', 'tintola (Alghero)', 'viri, bмvere', "'acha", "'arzola", "'ccetta", "'eneru", "'enucru", "'enucr u", "'erru", "'estire", "'estire", "'ichu", "'ichumurisca", "'idru", "'inu", 'cherjere', 'mariane', 'mrexаni', 'matxoni (Alghero)', 'bolta, borta', 'cociula', 'remщliu', 'molinana', 'vтrtitxe (Alghero)', 'votаi,  botаre,  votаre', 'trimizon e', 'vulcаnu, vurcanu', 'sboriаi,  ibboidare,  sbuidаi', 'txapar (Alghero), cavт (Tabarchino)', 'taffaranu, tafferanu', 'safiru', 'butirera,  butirrera, bituиra', 'tzintzalu,  tzintzula,  tintula', 'sмnciu, sinsulu, sintzu, sintzula', 'marr a', 'marrare', 'zia', 'tia', 'tzia, cia', 'zizм', 'lamparaxu', 'orgiali, orxali,  orxabi', 'zingaru, zinganu', 'ziu', 't io', 'tiu, tziu', 'tuche, tughe', 'bachiаna, baghiana, bagiana, baiana, vagghiana', 'citiri (stare zitto)', 'carabassa',  'sщcura (Alghero)', 'zucchinu', 'cruccuriga', 'mтidare,  muidare,  muitare']

我的任务:删除括号中的单词,并将包含逗号的项目分成单独的单词。

我为它做了一个简单的循环(dialettando_tokens是列表):

string = " ".join(dialettando_tokens)
dialettando = string.split()
for word in dialettando:
    if '(' in word or ')' in word:
        dialettando.remove(word)
    elif ',' in word:
        dialettando.remove(word)
        dialettando.append(word[:-1]) 

print(dialettando)

输出:

['ammassuladu', 'papa', 'tintola', 'viri,', 'bмvere', "'acha", "'arzola", "'ccetta", "'eneru", "'enucru", "'enucru", "'e rru", "'estire", "'estire", "'ichu", "'ichumurisca", "'idru", "'inu", 'cherjere', 'mariane', 'mrexаni', 'matxoni', 'bolt a,', 'borta', 'cociula', 'remщliu', 'molinana', 'vтrtitxe', 'votаi,', 'votаre', 'trimizone', 'vurcanu', 'ibboidare,', 's buidаi', 'txapar', 'cavт', 'taffaranu,', 'tafferanu', 'safiru', 'butirrera,', 'bituиra', 'tzintzula,', 'tintula', 'sinsu lu,', 'sintzula', 'marra', 'marrare', 'zia', 'tia', 'cia', 'zizм', 'lamparaxu', 'orxali,', 'orxabi', 'zinganu', 'ziu', ' tio', 'tziu', 'tughe', 'baghiana,', 'baiana,', 'vagghiana', 'citiri', **'zitto)'**, 'carabassa', 'sщcura', 'zucchinu', 'cruc curiga', 'muidare,', 'muitare', 'botаre', 'vulcаnu', 'sboriаi', 'butirera', 'tzintzalu', 'sмnciu', 'sintzu', 'tzia', 'or giali', 'zingaru', 'tiu', 'tuche', 'bachiаna', 'bagiana', 'mтidare']

你可以看到它删除了除“zitto”之外的所有不必要的项目,我不知道为什么。

2 个答案:

答案 0 :(得分:6)

列表dialettando在迭代时被修改。这会给你意想不到的结果。

相反,迭代它的副本如下:

for word in dialettando[:]:

答案 1 :(得分:1)

可以从列表中删除项目。但是这种语法没有记录,也不保证是可移植的。但通常情况下,如果要迭代列表并想要删除当前元素,则“当前”元素将成为删除后的元素。以下是您无需复制列表即可使其正常工作的内容:

Fatal error: Call to undefined method DOMNodeList::query()