[python] 리스트를 튜플리스트로 병합하는 방법?

다음을 달성하기위한 Pythonic 접근법은 무엇입니까?

# Original lists:

list_a = [1, 2, 3, 4]
list_b = [5, 6, 7, 8]

# List of tuples from 'list_a' and 'list_b':

list_c = [(1,5), (2,6), (3,7), (4,8)]

의 각 구성원은 list_c튜플이며, 첫 번째 구성원은 출신 list_a이고 두 번째 구성원은 출신 입니다 list_b.



답변

파이썬 2에서 :

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> zip(list_a, list_b)
[(1, 5), (2, 6), (3, 7), (4, 8)]

파이썬 3에서 :

>>> list_a = [1, 2, 3, 4]
>>> list_b = [5, 6, 7, 8]
>>> list(zip(list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]


답변

파이썬 3.0에서 zip은 zip 객체를 반환합니다. 를 호출하여 목록에서 목록을 얻을 수 있습니다 list(zip(a, b)).


답변

맵 람다를 사용할 수 있습니다

a = [2,3,4]
b = [5,6,7]
c = map(lambda x,y:(x,y),a,b)

원본 목록의 길이가 일치하지 않는 경우에도 작동합니다


답변

내장 함수 zip을 찾고 있습니다.


답변

이것이 파이썬 방식인지 아닌지는 확실하지 않지만 두 목록에 같은 수의 요소가있는 경우 단순 해 보입니다.

list_a = [1, 2, 3, 4]

list_b = [5, 6, 7, 8]

list_c=[(list_a[i],list_b[i]) for i in range(0,len(list_a))]


답변

나는 이것이 오래된 질문이라는 것을 알고 이미 대답했지만 어떤 이유로 든 여전히이 대안 솔루션을 게시하고 싶습니다. 필요한 “마법”을 수행하는 내장 함수를 찾는 것이 쉽지만, 스스로 할 수 있다는 것을 아는 것은 아프지 않습니다.

>>> list_1 = ['Ace', 'King']
>>> list_2 = ['Spades', 'Clubs', 'Diamonds']
>>> deck = []
>>> for i in range(max((len(list_1),len(list_2)))):
        while True:
            try:
                card = (list_1[i],list_2[i])
            except IndexError:
                if len(list_1)>len(list_2):
                    list_2.append('')
                    card = (list_1[i],list_2[i])
                elif len(list_1)<len(list_2):
                    list_1.append('')
                    card = (list_1[i], list_2[i])
                continue
            deck.append(card)
            break
>>>
>>> #and the result should be:
>>> print deck
>>> [('Ace', 'Spades'), ('King', 'Clubs'), ('', 'Diamonds')]


답변

문제 설명에 표시된 출력은 튜플이 아니라 목록입니다.

list_c = [(1,5), (2,6), (3,7), (4,8)]

확인

type(list_c)

list_a 및 list_b에서 결과를 튜플로 원한다고 생각하면

tuple(zip(list_a,list_b))