所以我有这两个清单:
L1 = [1, 2, 3, 4, 5]
L2 = [11, 12, 13, 14, 12]'
我想说的是:
如果L2中的元素等于12,则将L1中相应元素的值替换为12。
所以,如果我再打印L1,我就会
1, 12, 3, 4, 12
我很难解决这个问题,而且在过去的几天里我也多次搜索过它。即使答案在那里,我也很欣赏这个特定问题的解决方案,因为我是python的新手,可能很难适应一个人的代码来满足我自己的需求。非常感谢。
答案 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)
+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