将列表项与相同的开头组合在一起

时间:2016-12-05 22:56:47

标签: python

我需要循环来运行列表,并将所有值与特定字符串连接到前面的值。我有以下内容,只能部分完成工作。

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

编辑:修正缩进

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=[]