无法从lis中删除项目

2024-10-01 02:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张单子:

['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èu代币是列表):

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”,我不知道为什么。你知道吗


Tags: inrewordpapavotvirienucruvere
2条回答

您可以在迭代列表时从列表中移除项目。但是这种语法没有文档记录,也不能保证是可移植的。但是一般来说,如果您在一个列表上迭代并且想要删除当前元素,那么您的“current”元素将成为您删除的元素之后的元素。以下是无需复制列表即可实现的方法:

i = 0
while i < len(myList):
    if myList[i] matches some criteria for deletion:
         myList.remove(myList[i])
    else:
        i += 1

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

相反,对其副本进行如下迭代:

for word in dialettando[:]:

相关问题 更多 >