[Python Cookie] How to unzip a list of tuples

KwanHong·2021년 2월 8일
1

Python Cookie

목록 보기
1/1
post-thumbnail

🧐 When?

  • 튜플 리스트의 튜플 아이템의 같은 위치의 값끼리 묶고 싶음
  • zip() 함수로 바로 풀면, 튜플이 unpack 되지 않아 의도대로 묶이지 않음

🏋🏻‍♂️ How to

Method 1: Using zip() and * operator

  • asterisk (*)를 사용하여 unpack
    - 참고 페이지 - 파이썬의 Asterisk(*) 이해하기
  • unpack을 하지 않고, 그대로 zipping하면 튜플이 풀리지 않은 채로 묶인다
  • zip(*iterable)로 zip object를 반환

Code snippet

zipped = [('a', 1), ('b', 2)]

unzipped_object_wo_unpacking = zip(zipped)
unzipped_list_wo_unpacking = list(unzipped_object_wo_unpacking)

print(unzipped_list_wo_unpacking)

unzipped_object = zip(*zipped)
unzipped_list = list(unzipped_object)

print(unzipped_list)

Output

[(('a', 1), ), (('b', 2), )]
[('a', 'b'), (1, 2)]

Method 2: Using List Comprehension

  • 가장 naive한 방식

Code snippet

test_list = [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]

print(test_list)

# using list comprehension to perform unzipping
unzipped_list = [[i for i, j in test_list],
				 [j for i, j in test_list]]

print(unzipped_list)

Output

[('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
[('Akshat', 'Bro', 'is', 'Placed'), (1, 2, 3, 4)]

Method 3: Using map()

  • map() 사용
  • map() 함수는 list comprehensiongenerator expression의 도입으로 중요도 하락 및 가독성도 낮음

Code snippet

test_list = [('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]

print(test_list)

# using map() to perform unzipping
unzipped_list = map(None, *test_list)  # basic unpacking is performed

print(unzipped_list)

Output

[('Akshat', 1), ('Bro', 2), ('is', 3), ('Placed', 4)]
[('Akshat', 'Bro', 'is', 'Placed'), (1, 2, 3, 4)]

References

profile
본질에 집중하려고 노력합니다. 🔨

0개의 댓글