728x90
[Python] Zip()
파이썬의 내장함수인 zip()은 여러 개의 iterable 객체를 인자로 받고,
각 객체가 담고있는 원소를 튜플 형태로 차례로 접근할 수있는 iterator를 반환한다.
zip()
아래와 같이 num 리스트와 let 리스트를 zip() 함수에 인자로 넘겨서 호출이 가능하다.
num = [1, 2, 3]
let = ['a','b','c']
for zipper in zip(num, let)
print(zipper)
(1, 'a')
(2, 'b')
(3, 'c')
** zip() 함수로 넘기는 인자의 길이가 다를 땐 짧은 인자를 기준으로 데이터가 엮이고 나머지는 버려지기 때문에 주의해야한다.
unzip
zip() 함수로 엮어놓은 데이터를 다시 해체하고 싶을 땐 unpacking 연산자(*)를 붙여서 해체가 가능하다.
num, let = zip(*zipper)
>>> num
(1, 2, 3)
>>> let
('a', 'b', 'c')
dictionary
zip() 함수를 이용하면 두 개의 리스트나 튜플부터 쉽게 사전을 만들 수 있다.
키를 담고있는 리스트와 값을 담고있는 리스트를 zip() 함수에 넘긴 후 결과를 다시 dict() 함수에 넘기면 된다.
keys = [1, 2, 3]
values = ['a','b','c']
>>> dict(zip(keys, values))
{1: 'a', 2: 'b', 3: 'c'}
example
zip() 함수의 활용법에 대해 알아보자.
다음과 같은 이차원 배열 arr가 주어질 때, arr[i][j] = arr[j][i] 를 만족하면 1 아니라면 0을 출력해야한다.
arr = [[19, 498, 258, 587], [63, 93, 7, 754], [258, 7, 1000, 723], [587, 754, 723, 81]]
예를 들어 다음과 같은 행렬이 있다고 생각해보자
arr = [[1,2,3],[4,5,6]]
x = zip(*arr)
# x = zip([1,2,3], [4,5,6])
zip(*arr) 를 적용하면 다음과 같은 결과를 얻을 수 있다.
[(1,4), (2,5), (3,6)]
' * ' (unpacking 연산자)는 arr에 있는 행렬의 각 행을 개별적인 인자로 전달하여
각 행의 요소들이 병렬로 묶이게 되어 전치 행렬을 생성할 수 있다.
각 행의 요소를 병렬로 묶어 전치 행렬을 생성한다.
그 후 map(list, zip(*arr)) 를 적용하여 각 튜플을 리스트로 변환하면,
다음과 같이 리스트를 얻을 수 있다.
[[1,4], [2,5], [3,6]]
def solution(arr):
return int(arr == list(map(list, zip(*arr))))
참고
반응형
'👩💻 Develope > Python' 카테고리의 다른 글
[Python] index 찾기 (find, index) (0) | 2024.03.25 |
---|---|
[Python] 인덱싱, 슬라이싱 (0) | 2024.03.21 |
[Python] ImportError: cannot import name 'JSONDecodeError' from 'requests.exceptions' (0) | 2024.02.07 |
[Python] JSON 파일 파싱하기 (1) | 2024.01.30 |
[Python] Requests (0) | 2024.01.29 |