점프투파이썬 스터디 5장 복습 + 되새김 문제
2024. 2. 17. 20:37ㆍ학습/팀스터디
01 도전한 점
- from operator import attrgetter : 클래스의 객체를 "기준"에 맞춰 정렬한다.
- 짝궁 구하기 코드, 타일 구하기 함수를 제작했다.
- itertools.permutations, itertools.combinations 차이 이해하기(되새김 16번)
- result = itertools.zip_longest(new_data, role, fillvalue = '휴식') : itertools.zip_longest는 클래스다.
- 해당 모듈은 이터레이터 객체 result 를 생성했을 뿐, 값이 생성된 것은 아니다. 아래 참고!
02 문제 풀이
03 itertools.zip_longest()
- itertools.zip_longest() 함수는 이터레이터를 반환하기 때문에, 이터레이터 객체가 생성되었을 뿐 실제로 값을 가져오지는 않는다. 이터레이터 객체는 값을 순회할 때에만 실제 값을 생성한다.
- 따라서 print(result)를 호출하면 아무것도 출력되지 않는다. result가 이터레이터 객체일 뿐이고, 아직 값이 생성되지 않았기 때문이다.
- 주의할 점은 itertools.zip_longest() 함수가 이터러블을 반환하기 때문에 값을 실제로 확인하려면 result를 반복문으로 순회하거나 이터레이터를 리스트나 튜플로 변환하여 보다 직관적으로 확인할 수 있다.
- 점프투파이선 5장 마지막 부분에 Faker 실습코드 보다가 깨달은 건데 해당 코드를 참고하여 이해하시오.
04 이터레이터 객체와 이터러블 데이터의 차이
이터러블(iterable) 데이터와 이터레이터(iterator) 객체는 파이썬에서 데이터를 순회하고 처리하는 데 사용되는 두 가지 다른 개념이다. 표준 라이브러리를 공부하면서 이터레이터 객체를 배웠는데 보통 반복 가능한 데이터타입을 이터러블 데이터라고 하기에 둘의 차이를 비교해보았다.
- 이터러블(iterable) 데이터
- 이터러블은 반복 가능한 객체로, 내부에 여러 개의 요소를 포함하고 있다.
- 리스트(list), 튜플(tuple), 세트(set), 딕셔너리(dictionary) 등이 이터러블 데이터의 예이다.
- 이터러블은 for 루프에서 직접 사용할 수 있으며, iter() 함수를 통해 이터레이터로 변환될 수 있다.
- 이터레이터(iterator) 객체
- 이터레이터는 이터러블 데이터를 순회할 때 사용되는 객체로, 데이터의 요소에 접근하는 방법을 제공한다.
- 이터레이터는 next() 함수를 사용하여 다음 요소에 순차적으로 접근하고, 모든 요소를 순회한 후에는 StopIteration 예외를 발생시킨다.
- 이터레이터는 iter() 함수를 사용하여 생성할 수 있다.
- 이터레이터 객체는 반복 과정에서 내부 상태를 유지하므로, 메모리를 효율적으로 사용할 수 있다.
간단히 말해, 이터러블 데이터는 반복 가능한 객체 자체를 가리키며, 이터레이터 객체는 반복 과정에서 데이터에 접근하고 처리하는 도구다. 일반적으로 이터러블 데이터를 이터레이터 객체로 변환하여 데이터를 순회하고 처리한다.
05 왜? 언제 사용하는가?
- for 루프를 사용하여 순회할 때 파이썬은 내부적으로 이터레이터를 생성한다. 그렇기에 대부분의 경우에는 직접적으로 이터레이터를 생성할 필요는 없다.
- 그러나 때로는 데이터를 다루는 과정에서 명시적으로 이터레이터를 생성하는 것이 유용할 수 있다.
- 예를 들어, 여러 번 반복되는 데이터 집합을 순회해야 할 때 매번 for 루프를 사용하는 것보다 이터레이터를 생성하여 효율적으로 데이터에 접근할 수 있다.
- 또한, 특정 상황에서는 iter() 함수를 사용하여 이터레이터를 생성하는 것이 코드의 가독성을 높일 수 있다.
- 따라서 이터레이터를 명시적으로 사용하는 경우는 상황에 따라 다를 수 있겠다.
'학습 > 팀스터디' 카테고리의 다른 글
점프투파이썬 스터디 4장 함수 이론 복습 (0) | 2024.02.20 |
---|---|
점프투파이썬 스터디 2장 자료형 이론 복습 (1) | 2024.02.19 |
점프투파이썬 스터디 4장 되새김 문제 (1) | 2024.02.15 |
🔎아티클 스터디 : 데이터분석팀 인터뷰 (0) | 2024.02.06 |
🔎아티클 스터디 : 시각적 집산(Visual Aggregation) (0) | 2024.02.01 |