2014-02-27 5 views
0

현재이 기능이 있으므로 더 많은 목록을 가져올 수 있도록 확장 가능하게 만들고 싶습니다. 즉, 2 개의 목록 또는 10 개의 목록을 결합해야하는지 여부에 관계없이이 함수를 사용하고 싶습니다.* args를 사용하여 여러 목록을 결합하는 방법은 무엇입니까?

l1 = [['a','b','c'],['d','e','f']] 
l2 = [['A','B','C'],['D','E','F']] 

[L1 + L2 for L1, L2 in zip(l1, l2)] 

결과가 같아야

[['a','b','c','A','B','C'],['d','e','f','D','E','F']] 
+1

'L1'에서 'L4'샘플 출력 또는 샘플 입력입니까? 그들은 입력으로 작동하지 않습니다. –

+0

이들은 샘플 입력이며 저에게 적합합니다. l1과 l2를 정의한 후에는 [L1 + L2는 zip (l1, l2)에 사용] – Chris

+0

여기서 혼란스러운 이름을 사용하고 있습니다. 입력에 대한 소문자'l ', 루프 변수에 대한 대문자'L '. 입력 한 'l1'과'l2' 이름이 게시물의'L1'과 'L2' 목록과 동일합니까? –

답변

3

사용 :

[sum(l, []) for l in zip(*lists)] 

데모 : 함수로서

>>> l1 = [['a', 'b', 'c'], ['d', 'e', 'f']] 
>>> l2 = [['A', 'B', 'C'], ['D', 'E', 'F']] 
>>> lists = (l1, l2) 
>>> [sum(l, []) for l in zip(*lists)] 
[['a', 'b', 'c', 'A', 'B', 'C'], ['d', 'e', 'f', 'D', 'E', 'F']] 
또는

:

,536,
def combine_lists(*lists): 
    return [sum(l, []) for l in zip(*lists)] 

combine_lists(l1, l2) 
+0

화려한! 함수는 다음과 같이 보일 것입니다 : \t def CombineLists (self, * lists) : \t \t [l (zip (* lists)]에 대한 sum [* l, []) – Chris

+0

@Chris : 거기에'돌아올거야. ' –

+0

내 잘못한 부분. 나는 단순히 목록을 결합하는 것뿐만 아니라 목록을 압축하고 싶다. 예를 들어 l1 = [[ 'a', 'b', 'c'], [ 'd', 'e', ​​'f']] 및 l2 = [[ 'A', 'B' ], [ 'D', 'E', 'F']]. 결과는 다음과 같아야합니다 : [[ 'a', 'b', 'c', 'A', 'B', 'C'], [ 'd', 'e', ​​'f', 'D', 'E ','F ']] – Chris