2011-02-05 2 views
0

저는 파이썬에 거의 익숙하지 않습니다. 그리고 나는 겉보기에 간단한 문제에 봉착했습니다. 나는 두 목록 하나에서 다른리스트로 값을 나열하십시오.

L1 = [a,b,c] 
L2 = [1,2,3] 

가 지금은 L1이되기 위해 L2의 값을 대체 할 가지고 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의 길이는 L2보다 길기 때문에 L1의 모든 항목에 대해 발생해야합니다. 그것이 문제이다. 이 도움이

희망, 당신은 목록의 조각을 대체 할 수

+0

설명을 이해하는 데 문제가 있습니다. 출력은 무엇이며, 입력은 무엇입니까? 변수의 값/의미를 변경하지 마십시오. 즉, L1 = complex_operation (L1, L2) 대신 L3 = complex_operation (L1, L2)으로 설명하십시오. 또한 "---->"또는 "or :"와 같은 속기를 사용하지 마십시오. 두 상징이 무엇인지 전혀 모르겠습니다. – phihag

+0

엉망으로 미안 해요! – jaden

답변

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'b''a'의 모든 인스턴스를 대체 할 무엇을 잘못 해석,이 작품 :

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

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] 

편집 : 질문의 더 나은 이해를 위해이 주어진 예제에 대한 예상 출력을 게시하는 것이 도움이 될 것입니다.

+0

노력에 감사하지만 제프의 두 번째 코드는 내가 찾고 있던 것이었다. 도우려는 시도. 자덴 – jaden

관련 문제