2016-12-05 27 views
0

我需要執行一個循環來遍歷列表,並將所有具有特定字符串的值連接到前一個值。我有以下幾點,這隻能部分完成工作。將列表的項目合併爲相同的開始

thing = ["abc","bde","bdf","bdg","bei"] 

for i in thing: 
    if "bd" in i: 
     value = thing.index(i) 
     thing[value-1]=thing[value-1]+thing[value] 
     del thing[value] 

print thing 

當這樣放進去,我得到:

['abcbde', 'bdfbdg', 'bei'] 

期望的結果是:

['abcbdebdfbdg', 'bei'] 

編輯:固定縮進

+2

嗨,尼克,歡迎來到SO!你能否在你的代碼示例中修復縮進?就目前而言,它是無效的Python代碼,縮進_may_可以在解決您的問題時發揮作用。 –

+1

也在列表上迭代,而更改元素可能會導致麻煩。 –

+0

對不起,寫這個問題只是一個錯誤。固定。 –

回答

0

正如其他人的建議,我會不建議在迭代時更改thing,因爲它可能會產生意想不到的後果。試試這個:

thing=['abc', 'bde', 'bdf', 'bdg', 'bei'] 
output=[thing[0]] # initiate output to ['abc'] 
for i in thing[1:]: #['bde', 'bdf', 'bdg', 'bei'] 
    if 'bd' in i: 
     output[-1]=output[-1]+i 
    else: 
     output.append(i) 

print(output) 
#['abcbdebdfbdg', 'bei'] 

開始從'bde'迭代,讓你有一個元素output積累上。然後使用[-1]拼接獲得output的最後一個元素,並在'bd'處於當前迭代中時追加。

如果您確實想清空thing那麼我會建議使用列表.pop方法。這樣在你的循環結束時,thing=[]