source

목록을 튜플 목록으로 병합하려면 어떻게 해야 합니까?

itover 2022. 11. 12. 08:46
반응형

목록을 튜플 목록으로 병합하려면 어떻게 해야 합니까?

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

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

Python 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)]

Python 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)]

python 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_c = [(1,5), (2,6), (3,7), (4,8)]

을 조사하다.

type(list_c)

결과를 list_a 및 list_b에서 tuple로 하고 싶은 것을 생각하면,

tuple(zip(list_a,list_b)) 

이것이 비단어적인 방법인지 아닌지는 확실하지 않지만, 만약 두 목록에 동일한 수의 요소가 있다면 이것은 간단해 보입니다.

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

또는map개봉 시:

>>> list(map(lambda *x: x, list_a, list_b))
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>> 

사용하지 않고 하나의 대안으로zip:

list_c = [(p1, p2) for idx1, p1 in enumerate(list_a) for idx2, p2 in enumerate(list_b) if idx1==idx2]

1등 1등, 2등 2등 2등 1등 2등 2등 1등 2등 2등 2등 1등 1등 1등 2등 1등 2등 2등 2등 2등 1등두 목록의 가능한 모든 조합은 다음과 같습니다.

list_d = [(p1, p2) for p1 in list_a for p2 in list_b]

나처럼 튜플 목록이 아닌 목록(2D 목록)으로 변환해야 하는 경우 다음을 수행할 수 있습니다.

list(map(list, list(zip(list_a, list_b))))

다음과 같이 2D 목록을 반환해야 합니다.

[[1, 5], 
 [2, 6], 
 [3, 7], 
 [4, 8]]

언급URL : https://stackoverflow.com/questions/2407398/how-to-merge-lists-into-a-list-of-tuples

반응형