我想将原点列表中的'x-%'替换为循环中'anotherList'的值。 如您所见,循环时,只保存最后一个状态,因为它会再次替换standardList。
什么可能是“保存每个列表的状态”然后再循环它的最佳方式?
结果应该是:
result = ['I', 'just', 'try','to', 'acomplish', 'this','foo', 'list']
我得到了什么:
originList = ['I', 'x-0', 'x-1','to', 'acomplish', 'x-2','foo', 'x-3']
anotherList = ['just','try','this','list']
for index in originList:
for num in range(0,4):
if 'x' in index:
result = str(originList).replace('x-%s'%(str(num)), anotherList[num])
print result
#['I', 'x-0', 'x-1', 'to', 'acomplish', 'x-2', 'foo', 'list'] <-- wrong :X
感谢您的帮助,因为我暂时无法理解
修改* 如果有更清洁的解决方案,我也很高兴听到
答案 0 :(得分:2)
这个避免创建新列表
count = 0
for word in range(0, len(originList)):
if 'x-' in originList[word]:
originList[word] = anotherList[count]
count += 1
print originList
答案 1 :(得分:1)
这里你去!
>>> for original in originList:
if 'x' in original:
res.append(anotherList[int(original[-1])]) #grab the index
else:
res.append(original)
>>> res
['I', 'just', 'try', 'to', 'acomplish', 'this', 'foo', 'list']
>>>
由于所需值的索引位于originList
的项目中,因此您可以使用它,因此不需要额外的循环。希望这有帮助!
答案 2 :(得分:1)
originList = ['I', 'x-0', 'x-1','to', 'acomplish', 'x-2','foo', 'x-3']
anotherList = ['just','try','this','list']
res = []
i=0
for index in originList:
if 'x' in index:
res.append(anotherList[i])
i += 1
else:
res.append(index)
print res
你可以得到正确的结果! 但是,我认为你已经使用了string.format(就像这样)
print '{0}{1}{2}{3}'.format('a', 'b', 'c', 123) #abc123
阅读python docs - string
答案 3 :(得分:1)
originList = ['I', 'x-0', 'x-1','to', 'acomplish', 'x-2','foo', 'x-3']
anotherList = ['just','try','this','list']
def change(L1, L2):
res = []
index = 0
for ele in L1:
if 'x-' in ele:
res.append(L2[index])
index += 1
else:
res += [ele]
return res
print(change(originList, anotherList))
结果:
['I', 'just', 'try', 'to', 'acomplish', 'this', 'foo', 'list']