728x90
반응형
파이썬 내장함수
zip(*iterable)
: iterable한 객체를 인수로 받으며 동일한 개수로 이루어진 자료형을 묶어서 iterator로 반환
(zip과 동일한 형태로 동작, 일부 성능 향상을 위해서 iterable 객체 반환)
>>> print(list(zip([1, 2, 3], ['a', 'b', 'c'])))
[(1, 'a'), (2, 'b'), (3, 'c')]
map(f, iterable)
: map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수
lambda함수를 쓸 경우 맨 아래처럼 two_times함수를 따로 정의하지 않고도 사용할 수 있다.
>>> def two_times(x):
... return x*2
...
>>> list(map(two_times, [1, 2, 3, 4]))
[2, 4, 6, 8]
############################################
>>> list(map(lambda a: a*2, [1, 2, 3, 4]))
[2, 4, 6, 8]
itertools
: Python에서 자신만의 반복자를 만드는 모듈
- 참고 링크
import itertools
chain()
: iterable한 객체(리스트, 튜플...)를 인수로 받아 하나의 iterator로 반환
>>> letters = ['a', 'b', 'c', 'd', 'e', 'f']
>>> booleans = [1, 0, 1, 0, 0, 1]
>>> decimals = [0.1, 0.7, 0.4, 0.4, 0.5]
>>> print(list(itertools.chain(letters, booleans, decimals)))
['a', 'b', 'c', 'd', 'e', 'f', 1, 0, 1, 0, 0, 1, 0.1, 0.7, 0.4, 0.4, 0.5]
>>> from itertools import chain
>>> country = ['대한민국','스웨덴', '미국']
>>> capital = ['서울','스톡홀름','워싱턴']
>>> c = chain(country, capital)
>>> print(list(c))
['대한민국', '스웨덴', '미국', '서울', '스톡홀름', '워싱턴']
count(시작, [step])
: 시작 숫자부터 step(없으면 1)씩 무한히 증가
>>> from itertools import count
>>> for number, letter in zip(count(0, 10), ['a', 'b', 'c', 'd', 'e']):
>>> print('{0}: {1}'.format(number, letter))
0: a
10: b
20: c
30: d
40: e
islice(iterable, [시작], 정지[,step])
: iterable한 객체를 특정 범위로 슬라이싱하고, iterator로 반환
>>> from itertools import islice
>>> for i in islice(range(10), 5):
>>> print(list(i))
0
1
2
3
4
>>> for i in islice(range(100), 0, 100, 10):
>>> print(i)
0
10
20
30
40
50
60
70
80
90
cycle(iterable, [시작], 정지[,step])
: 순환 가능한 객체 내 요소를 반복적으로 생성
>>> from itertools import cycle
>>> for number, letter in zip(cycle(range(2)), ['a', 'b', 'c', 'd', 'e']):
>>> print('{0}: {1}'.format(number, letter))
0: a
1: b
0: c
1: d
0: e
ex) 2팀에 5명의 인원을 순서대로 배분할때 range(2)는 0, 1 두 팀을 의미하고 zip으로 묶어서
repeat(elem, N)
: 요소를 무한히(or N개) 반복
>>> from itertools import repeat
>>> print(list(repeat('Hello, world!', 3)))
['Hello, world!', 'Hello, world!', 'Hello, world!']
>>> print(10, 3)
10 10 10
dropwhile(predicate, iterable)
: 특정 조건에 맞지 않으면 출력 시작
ex) 10보다 큰 것이 나오는 순간 그 뒤의 모든 요소를 리턴
>>> from itertools import dropwhile
>>> print(list(dropwhile(lambda x: x < 10, [1, 4, 6, 7, 11, 34, 66, 100, 5, 8 1])))
[11, 34, 66, 100, 5, 8, 1]
takewhile(predicate, iterable)
: dropwhile과 반대인 개념으로 특정 조건이 맞는 순간 출력 멈춤
ex) 10보다 큰 값이 나오기 전까지 모든 요소 리턴
>>> from itertools import takewhile
>>> print(list(takewhile(lambda x: x < 10, [1, 4, 6, 7, 11, 34, 66, 100, 5, 8 1])))
[1, 4, 6, 7]
출처 :
https://hamait.tistory.com/803
https://wikidocs.net/16070
728x90
반응형
'Coding TEST' 카테고리의 다른 글
[코딩 테스트 with 파이썬] Chapter 05. DFS/BFS (0) | 2021.07.27 |
---|---|
[코딩 테스트 with 파이썬] Chapter 04. Implementation (2) | 2021.07.26 |
[Codility_16. Greedy Algorithm] MaxNonoverlappingSegments (3) | 2021.05.21 |
[코딩 테스트 with 파이썬] 0. Introduction (0) | 2021.05.20 |
[코딩 테스트 with 파이썬] Chapter 03. Greedy (0) | 2021.05.18 |