2011-02-05 160 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] 

編輯:爲了更好地理解您的問題,將有助於發佈給定示例的預期輸出。