我几乎是python的新手,我遇到了一个看似简单的问题。我有两个清单
L1 = [a,b,c]
L2 = [1,2,3]
现在我想将L2中的值替换为L1变为L1 = [1,2,3]
现在这就是有趣的地方
L2的长度始终是L1中可以有多少个唯一项目 例如
L2 = [1,2,3,4,5]
than
L1 = [a,b,c,d,e]
or
L2 = [1,2]
than
L1 = [a,b]
但那不是全部...... L1的长度可以不同,并且在L2的长度之后无序......:
例如:
L2 = [1,2]
than L1 might be
L1 = [a,b,a,a,a,b] #(first two items are always different)
or
L2 = [1,2,3,4,5]
than L1 might be
L1 = [a,b,c,d,e,a,a,e,e,b,b] #(first 5 items are different)
我希望我解释得足够好。如果有任何问题可以随意提问!
我希望有人可以帮助我,或者给我一个提示,在哪里或者搜索什么。我这几天都试图解决这个问题。
事先提前贾登
的 的 _edit __
L1和L2是在我的脚本的早期创建的。现在我想以某种方式连接两个列表中的项目。
L1[0] = L2[0]
L1[1] = L2[1]
等等。对于L2的长度,但它必须发生在L1中的每个项目,因为L1总是比L2长。这就是问题所在。
希望这有帮助,
贾登
答案 0 :(得分:2)
您可以替换列表的切片。
>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> length = len(L2)
>>> L1[:length] = L2[:length]
>>> print(L1)
[1, 2, 3, 4, 5, 'a', 'a', 'e', 'e', 'b', 'b']
万一我误解了您想要的内容,并希望将'a'
的每个实例替换为1
,将'b'
替换为2
等,这样做有效:
>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> mapping = dict(zip(L1, L2))
>>> for i, k in enumerate(L1[:]):
L1[i] = mapping[k]
>>> print(L1)
[1, 2, 3, 4, 5, 1, 1, 5, 5, 2, 2]
答案 1 :(得分:0)
您可以创建一个字典,其中包含从l1到l2,{'a':1,'b':2,....}的值的映射,然后迭代l1并替换值。
d = dict ((l1[idx],y) for idx, y in enumerate(l2))
l1 = [d[x] for x in l1]
编辑:为了更好地理解您的问题,发布给定示例的预期输出会很有帮助。