source

리스트/쌍의 태플을 2개의 리스트/탭으로 압축 해제

nicesource 2023. 1. 28. 09:34
반응형

리스트/쌍의 태플을 2개의 리스트/탭으로 압축 해제

중복 가능성:
Python의 Transpose/Unzip 함수

다음과 같은 목록이 있습니다.

list = (('1','a'),('2','b'),('3','c'),('4','d'))

리스트를 2개의 리스트로 나누고 싶습니다.

list1 = ('1','2','3','4')
list2 = ('a','b','c','d')

예를 들어 다음과 같이 할 수 있습니다.

list1 = []
list2 = []
for i in list:
   list1.append(i[0])
   list2.append(i[1])

하지만 좀 더 우아한 해결책이 있는지 알고 싶어요.

>>> source_list = [('1','a'),('2','b'),('3','c'),('4','d')]
>>> list1, list2 = zip(*source_list)
>>> list1
('1', '2', '3', '4')
>>> list2
('a', 'b', 'c', 'd')

편집: 주의:zip(*iterable)그 자체의 역수입니다.

>>> list(source_list) == zip(*zip(*source_list))
True

2개의 리스트로 압축 해제하면, 다음과 같이 됩니다.

>>> list1, list2 = zip(*source_list)
>>> list(source_list) == zip(list1, list2)
True

록스포트로커에 의해 제안된 추가.

list1 = (x[0] for x in source_list)
list2 = (x[1] for x in source_list)

언급URL : https://stackoverflow.com/questions/7558908/unpacking-a-list-tuple-of-pairs-into-two-lists-tuples

반응형