【发布时间】:2018-08-05 11:04:29
【问题描述】:
我必须搜索列表中的所有元素,并用另一个元素替换所有出现的元素。最好的方法是什么?
例如,假设我的列表有以下元素:
data = ['a34b3f8b22783cf748d8ec99b651ddf35204d40c',
'baa6cb4298d90db1c375c63ee28733eb144b7266',
'CommitTest.txt',
'=>',
'text/CommitTest.txt',
'0',
'README.md',
'=>',
'text/README.md',
'0']
我需要用字符'=>'前后元素的组合值替换所有出现的字符'=>',所以我需要的输出是:
data = ['a34b3f8b22783cf748d8ec99b651ddf35204d40c',
'baa6cb4298d90db1c375c63ee28733eb144b7266',
'CommitTest.txt=>text/CommitTest.txt',
'0',
'README.md=>text/README.md',
'0']
这是我目前写的代码:
ind = data.index("=>")
item_to_replace = data[ind]
combine = data[ind-1]+data[ind]+data[ind+1]
replacement_value = combine
indices_to_replace = [i for i,x in enumerate(data) if x==item_to_replace]
for i in indices_to_replace:
data[i] = replacement_value
data
然而,不需要的输出是这样的:
data = ['a34b3f8b22783cf748d8ec99b651ddf35204d40c',
'baa6cb4298d90db1c375c63ee28733eb144b7266',
'CommitTest.txt',
'CommitTest.txt=>text/CommitTest.txt',
'text/CommitTest.txt',
'0',
'README.md',
'CommitTest.txt=>text/CommitTest.txt',
'text/README.md',
'0']
有没有更好的办法?
【问题讨论】:
-
我不太明白。根据您的初始要求,“不需要的”输出实际上应该是什么?如果您想用组合的前一个值和下一个值替换“=>”?
-
@Nurjan - 不需要的输出是指我编写的代码产生的输出。但输出不是我需要的。
标签: python list indexing replace find