[Python 정리] 내장함수 zip, filter에 대하여◎ Python/알게된 것 정리2022. 9. 26. 22:17
Table of Contents
반응형
zip
기본적인 사용법
반복 가능한(iterable) 객체에 대한 처리를 수행하는 알게 된 지 얼마 안된 내장 함수다.
zip은 여러 개의 이터러블을 받아 튜플로 반환하는 이터레이터를 만든다. 예시로 보자.
x = [1, 2, 3]
y = [4, 5, 6]
arr = zip(x, y)
print(arr)
>>>
<zip object at 0x000001D42F322B00>
바로 출력하면 내부 요소가 보여지기 않기 때문에 리스트나 딕셔너리로 변환해서 출력해야 한다.
x = [1, 2, 3]
y = [4, 5, 6]
arr = list(zip(x, y))
print(arr)
>>>
[(1, 4), (2, 5), (3, 6)]
정상적으로 요소들이 튜플로 묶여있는 모습을 볼 수 있다.
유용한 방법 1 (병렬 처리)
zip으로 생각보다 다양한 작업을 처리할 수 있다. 대표적으로 병렬 처리를 할 수 있는데, 인자로 여러 개를 줄 수 있어서 가능하다 아래 예시 2개를 참고하자.
x = [[1, 2, 3], [4, 5, 6]]
y = ['A', 'B']
arr = zip(y, x)
for i, *v in arr: # 언패킹을 통한 배열 주기
print(i, *v)
>>>
A [1, 2, 3]
B [4, 5, 6]
x = [[1, 2, 3], [4, 5, 6]]
y = ['A', 'B']
arr = zip(y, x)
for x, y, z in zip("123", "456", "789"): # 문자열도 알아서 대입한다.
print(x, y, z)
>>>
1 4 7
2 5 8
3 6 9
유용한 방법 2 (Unpacking을 통한 활용법)
zip으로 묶었으면 당연히 풀 수도 있다. 앞에 unpacking 연산자를 붙이면 된다. 아래 예시로 보자.
x = [["홍길동", "김철수", "박찬호"], [21, 63, 42]]
y = ["이름", "나이"]
arr = dict(zip(y, x))
print("list(zip(*arr.items()))", list(zip(*arr.items())))
print("list(zip(*arr.values())) : ", list(zip(*arr.values())), end="\n")
for i in zip(*arr.values()):
print("요소 출력 : ", *i)
>>>
list(zip(*arr.items())) [('이름', '나이'), (['홍길동', '김철수', '박찬호'],
[21, 63, 42])]
list(zip(*arr.values())) : [('홍길동', 21), ('김철수', 63), ('박찬호', 42)]
요소 출력 : 홍길동 21
요소 출력 : 김철수 63
요소 출력 : 박찬호 42
예시로 적어둔 list(zip(*arr.items())), list(zip(*arr.values()))와 for문 예시를 찬찬히 뜯어보면 도움이 될 거라 생각한다.
filter
filter()는 조건에 맞는 요소만 포함한 이터레이터를 반환하는 내장 함수다.
필터링 조건은 인수를 하나만 받은 함수를 첫 번째 인수로 지정하고, 두 번째 인수는 이터러블을 주면 된다.
이 내장함수도 내부 요소를 보려면 list로 변환해서 출력해주어야 한다.
var = (1, 2, 3, 4, 5)
print(list(filter(lambda x : x > 2, var))) # 2보다 큰 값들만 출력
>>>
[3, 4, 5]
반응형
'◎ Python > 알게된 것 정리' 카테고리의 다른 글
[Python 정리] for문에서 이전 요소를 다음 요소에 덮어씌우는 방법? (0) | 2023.06.09 |
---|---|
[Python 정리] 리스트에서 평균과 가장 가까운 값의 인덱스를 찾는 법? (lambda 식 사용법) (1) | 2023.03.17 |
[Python 정리] if __name__ == "__main__": 의 의미, 활용법 (2) | 2022.09.24 |
[Python 정리] 프로퍼티, setter, 프라이빗 속성이란? (0) | 2022.09.24 |
[Python 정리] __init__과 __new__의 차이에 대하여 (0) | 2022.09.24 |
@Reo :: 코드 아카이브
자기계발 블로그