Python
[Python] 컴프리헨션(Comprehension)
Dahee.jo
2022. 2. 4. 11:19
SMALL
Definition
하나 이상의 순회 가능한 객체로부터 파이썬의 자료구조(리스트, 딕셔너리, 셋, 제너레이터)를 만드는 방법
(1) List Comprehension
1~5까지의 정수를 저장하는 리스트를 만드는 방법
nums = [1,2,3,4,5]
nums=[]
nums.append(1)
...
nums.append(5)
nums[]
for n in range(1,6):
nums.append(n)
nums=list(range(1,6))
위 방법들보다 더 간단하게 표현할 수 있는 방법이 바로 리스트 컴프리헨션이다.
#형식: [(식) for (항목) in (itrable object)]
nums=[n for n in range(1,6)] #[1,2,3,4,5]
이 외에도 기존 방법들보다 더 다양한 형태의 리스트를 만들 수 있다.
numString = [str(n) for n in range(1,6)] #['1','2','3','4','5']
evenNum = [n for n in range(1,6) if n % == 0] #[2,4]
matrix = [(row, col) for row in [1,2,3] for col in [1,2]]
#[(1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)]
(2) Dictionary Comprehension
#형식: {(키 표현식):(값 표현식) for (항목) in (iterable object)}
#예시
s = 'Python is easy to learn'
count = {letter:s.count(letter) for letter in s}
#count = {'P': 1, 'y': 2, 't': 2, 'h': 1, 'o': 2, 'n': 2, ' ': 4, 'i': 1, 's': 2, 'e': 2, 'a': 2, 'l': 1, 'r': 1}
(3) Set Comprehension : 순서가 없는 리스트와 다름없기 때문에 리스트 컴프리헨션과 비슷하지만, [ ] 대신 { }를 사용한다.
(4) Generator Comprehension
역시 리스트 컴프리헨션과 비슷하지만, [ ] 대신 ( ) 를 사용한다.
아래는 0 ~ 9 사이 정수 중 홀수 를 list 와 generator object 로 생성한 예제이다.
>>> [ i for i in xrange(10) if i % 2 ]
[1, 3, 5, 7, 9]
>>> ( i for i in xrange(10) if i % 2 )
<generator object <genexpr> at 0x7f6105d90960>
반응형