2016-01-08 52 views
2

我已經得到了列表中刪除項:無法從列表

['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)',我不知道爲什麼。

回答

6

列表dialettando在迭代它時被修改。這會給你意想不到的結果。

相反,遍歷其副本像這樣:

for word in dialettando[:]: 
+0

餘浩,謝謝你。有用。 – GiveItAwayNow

1

可以從列表中,而迭代它刪除項目。但是這種語法沒有記錄,並且不保證是可移植的。但一般來說,如果您迭代列表並想要移除當前元素,那麼您的「當前」元素將成爲您移除的元素之後的元素。下面是你可以做的事情,使它的工作沒有做一個副本的清單:

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