2016-12-05 8 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

こんにちはニック、ようこそ!あなたのコード例でインデントを修正してください。現状では無効なPythonコードであり、インデントの_may_には問題を解決するための役割があります。 –

+1

また、要素を変更しながらリストを反復すると、問題が発生する可能性があります。 –

+0

申し訳ありませんが、質問を書くのは間違いでした。一定。 –

答えて

0

他の人が示唆したように、私は希望意図しない結果が生じる可能性があるため、反復処理を行う際にはthingを変更することをおすすめしません。これを試してください:'bde'から反復

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'] 

スタートあなたが蓄積するoutputの要素を持つように。次に[-1]スプライスを使用して最後の要素をoutputにし、'bd'が現在の反復にある場合は追加します。

thingを空にするには、リスト.popを使用することをお勧めします。あなたのループの最後にそのように、thing=[]

関連する問題