如何用另一个列表的相应索引值替换列表元素?

时间:2015-04-21 02:14:09

标签: python python-2.7

所以我有这两个清单:

L1 = [1, 2, 3, 4, 5]  
L2 = [11, 12, 13, 14, 12]'

我想说的是:

如果L2中的元素等于12,则将L1中相应元素的值替换为12。

所以,如果我再打印L1,我就会

1, 12, 3, 4, 12

我很难解决这个问题,而且在过去的几天里我也多次搜索过它。即使答案在那里,我也很欣赏这个特定问题的解决方案,因为我是python的新手,可能很难适应一个人的代码来满足我自己的需求。非常感谢。

4 个答案:

答案 0 :(得分:1)

您可以使用enumerate迭代列表的索引值:

for i, element in enumerate(L2):
    # local variable 'i' contains the index
    # local variable 'element' contains the value

您可以使用comparison operator

检查元素的值
if element == 12:
    # do something

您可以使用以下语法将i列表中的new_value列为L1[i] = new_value

{{1}}

这应该为你提供编写工作循环所需的所有部分,祝你好运。

答案 1 :(得分:1)

>>> L1 = [1, 2, 3, 4, 5]
>>> L2 = [11, 12, 13, 14, 12]
>>> [12 if y==12 else x for x,y in zip(L1, L2)]
[1, 12, 3, 4, 12]

答案 2 :(得分:0)

@ TigerhawkT3的

+1

    #modify existing list
    x = [y if y == 12 else x for x,y in zip(x,y)]

    ##create newlist,instead of changing existing one
    newx=[]
    for i,j in zip(x,y):
        if j==12:
            newx.append(12)
        else:
            newx.append(i)

答案 3 :(得分:-1)

 for i, item  in enumerate(sourcelist):
            if i>=len(destlist):
                      break
            elif item==value:
                      destlist[i]=item

或者如果你想感觉很酷。

 tmp = map(lambda x,y: x if x==value else y, sourcelist, destlist)[0,min(len(source list), len(destlist))]
 sourcelist = tmp