Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- solutions of matrix equation
- 일차변환
- 빅오 표기법
- Big-Oh 예제
- matrix-vector product
- Big-Oh notation
- 코틀린 시작하기
- Big Theta
- 이진 탐색
- Big-O 예제
- nonhomogeneous linear system
- python
- matrix fo a linear transformation
- Big Omega
- 빅세타
- 코틀린 Hello World!
- nontrivial solution
- NumPy
- recursive algorithms
- homogeneous linear system
- 배열 섞기
- itertools
- trivial solution
- 알고리즘 분석의 실례
- one-to-one
- linear dependence
- matrix trnasformations
- 재귀함수
- 빅오메가
- 랜덤 순서 배열
Archives
- Today
- Total
코딩 연습
(파이썬) itertools 모듈의 takewhile 함수 본문
반응형
파이썬의 itertools 모듈에는 다음과 같은 takewhile 함수가 있다.
def takewhile(predicate, iterable):
for x in iterable:
if predicate(x):
yield x
else:
break
이 함수는 두 개의 매개변수 predicate 와 iterable 을 갖는다. predicate 는 True 나 False 를 리턴하는 함수라고 보면 되고, iterable 은 리스트, 튜플, 문자열과 같이 각각의 요소에 접근할 수 있는 자료형이라고 보면 된다. takewhile 함수는 iterable 의 각각의 요소에 순서대로 접근하여 prediacte 이 참이 될 때까지의 요소만으로 이루어진 반복자를 리턴하는 함수다.
다음의 예제를 보면 쉽게 이해할 수 있다.
>>> def condition(n):
... return n < 10
...
>>> a = [x for x in takewhile(condition, [1, 4, 6, 9, 10, 2, 3])]
>>> a
[1, 4, 6, 9]
결과를 보면 리스트 [1, 4, 6, 9, 10, 2, 3] 의 요소 중 10보다 작은 요소들로 구성된 [1, 4, 6, 9] 가 나온 것을 볼 수 있다.
왜 2, 3 이 결과에 포함되지 않느냐고 생각할 수 있지만, takewhile 함수는 그 이름에서 볼 수 있듯이 iterable 의 요소를 처음부터 접근하여 predicate 가 참이 되는 요소까지만 반영하게 된다. 즉, 1, 4, 6, 9 다음에 나오는 10이 predicate 를 거짓으로 만들기 때문에 10에서 break 되면서 멈추게 되는 것이다.
위에서 함수 condition 을 lambda 를 이용하여 표현할 수도 있다.
>>> a = [x for x in takewhile(lambda x: x<10, [1, 4, 6, 9, 10, 2, 3])]
>>> a
[1, 4, 6, 9]
반응형
'Python' 카테고리의 다른 글
(파이썬) functools 모듈의 reduce 함수 (0) | 2017.03.23 |
---|---|
(파이썬) Python 내장함수 enumerate (0) | 2017.03.22 |
(파이썬) itertools 모듈의 count 함수 (0) | 2017.03.21 |
(파이썬) 순열 -모든 경우 나열하기 (0) | 2017.03.21 |
(파이썬) 부정적분과 정적분 (0) | 2016.03.15 |
Comments