2011-02-05 158 views
0

我几乎是新来的蟒蛇,我坚持一个看似简单的问题。我有两个列表列表值从一个列表到另一个列表

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) 

我希望我解释它不够好。如果有任何问题随时问!

我希望有人可以帮助我,或给我一个提示在哪里或要搜索什么。自从几天以来,我试图解决这个问题。

THX提前

贾登

_edit__

L1和L2在我的脚本创建初期。现在我想以某种方式连接两个列表中的项目。

L1[0] = L2[0] 
L1[1] = L2[1] 

等等。对于L2的长度,但它必须发生在L1中的每一项,因为L1总是比L2长。那就是问题所在。

希望这有助于

贾登

+0

我无法理解您的描述。什么是输出,输入是什么?请不要改变变量的值/含义,即代替L1 = complex_operation(L1,L2)将其解释为L3 = complex_operation(L1,L2)。另外,请避免使用诸如“---->”或“or:”之类的简写。我不知道这两个符号的含义。 – phihag 2011-02-05 21:47:29

+0

对不起这个烂摊子! – jaden 2011-02-05 21:57:40

回答

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

以防万一,我误解你想要什么,并希望与2等与1取代的'a'每个实例,'b',这个工程:

>>> 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] 
+0

谢谢你,非常非常非常!第二段代码正是我想要聚在一起的!我不能够感谢你。最后,我可以去睡觉......并且睡觉;) – jaden 2011-02-05 22:06:07

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] 

编辑:为了更好地理解您的问题,将有助于发布给定示例的预期输出。