1.Comprehension
List , Dictionary등을 빠르게 만드는 기법으로 for + append보다 속도가 빠르다.
- if 문을 넣어 원하는 요소만 추가 가능
- 겹 for 문 사용 가능
- 다차원 배열을 만들기에 매우 유용 (단, 최적화 할 때 사용 → 복잡해지면 가독성이 떨어지기 때문)
evens = [ i for i in range(100) if i % 2 == 0 ] #if 조건이 들어간 comprehension
result = [(i,j) for i in range(5) for j in range(i)] #겹 for문
2.Generator
range 함수의 경우 숫자를 하나씩 생성하여 반환한다.
이와 같이 요소를 하나씩 생성하여 반환하는 객체를 Generator라고 한다.
- function에서 yield를 사용할 시 Generator가 된다.
- yield 하는 위치에서 값을 반환한다.
- Sequence 전체를 생성하는 것이 아니므로 메모리 효율적이다. ( 필요 시마다 메모리에 올림)
- 따라서 매우 큰 데이터 셋을 처리할 땐 Generator 사용을 권장한다.
- Generator Comprehension 형태로 선언 가능하다.
- 필요시까지 계산을 늦춰주는 효과가 있다. → Lazy Evaluation
- 의도적으로 늦추고 싶은 구문을 yield 뒤에 선언하면 다시 호출하기 전까지 해당 연산을 지연시킬 수 있다.
3.Built-in Functions
- zip
- 2개 이상의 순환 가능한 객체를 앞에서부터 한번에 접근할 때 사용
- Unpacking을 이용하여 2차원 리스트의 열 단위 접근 가능
- enumerate
- For문이 Seq을 돌 때 index가 필요할 경우 사용
- List형태로 출력하기 위해서는 List 변환이 필요
zip과 enumerate를 동시에 사용하는 등 여러 Generator을 한번에 사용할 수 있다.
- lambda function
- 함수의 이름없이 빠르게 만들 수 있는 익명함수
- lambda [param1],[param2],... : [expression] 형태로 사용
- 여러줄 쓸 수 없으며, 공식적으로 사용을 권장하지 않음 (문서화 미비, 이름이 존재하지 않는 함수 생성 등..)
4.Higher-Order Function(HOF) , 고차함수
고차함수는 함수를 인자로 받거나 함수를 결과로 반환하는 함수이다. map() , filter(), reduce()는 고차함수로, 각각 iterable한 sequence를 변환, 필터링, 축약하는데 사용된다. 고차함수는 프로그램의 유연성을 크게 향상시킨다.
- map
- 각 요소에 function 함수를 적용하여 반환
- map([function],[iterable])
- filter
- 각 요소에 function 함수를 적용하여 참이 나오는 것을 반환
- filter([function] , [iterable])
- reduce
- 각 요소에 function 함수를 적용하여 실행 값을 누적시킨 결과를 반환
- reduce([function],[iterable])
'STUDY > Python' 카테고리의 다른 글
[Python] 최댓값과 최솟값의 초깃값 설정 (0) | 2024.05.10 |
---|---|
[Python] Condition & Loop (0) | 2024.05.02 |
[Python] Data Structure (0) | 2024.05.02 |
[python] 리스트에서 원하는 위치 요소 제거 (0) | 2024.04.02 |
[Python] File I/O (절대경로, 상대경로) (0) | 2024.04.01 |