Python - 在替换之前循环遍历列表并保存状态

时间:2013-11-29 05:27:01

标签: python list loops

我想将原点列表中的'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

感谢您的帮助,因为我暂时无法理解

修改* 如果有更清洁的解决方案,我也很高兴听到

4 个答案:

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