4.6.1 리스트 컴프리헨션
number_list = list()
for number in range(1, 6):
number_list.append(number)
print(number_list)
[1, 2, 3, 4, 5]
number_list = list(range(1,6))
print(number_list)
[1, 2, 3, 4, 5]
** [표현식 for 항목 in 순회 가능한 객체]
**
number_list = [number for number in range(1,6)]
print(number_list)
[1, 2, 3, 4, 5]
number_list = [ number - 1 for number in range(1, 6)]
print(number_list)
[0, 1, 2, 3, 4]
** [표현식 for 항목 in 순회 가능한 객체 if 조건]
**
a_list = [number for number in range(1, 6) if number % 2 == 1]
print(a_list)
[1, 3, 5]
rows = range(1,4)
cols = range(1,3)
for row in rows:
for col in cols:
print(row, col)
1 1 1 2 2 1 2 2 3 1 3 2
rows = range(1,4)
cols = range(1,3)
cells = [(row, col) for row in rows for col in cols]
for cell in cells:
print(cell)
(1, 1) (1, 2) (2, 1) (2, 2) (3, 1) (3, 2)
(row, col)튜플 리스트를 만들어서 cells에 할당후 cells 를 순회
for row, col in cells: print(row, col)
1 1 1 2 2 1 2 2 3 1 3 2 그리고 cells리스트를 순회한 것처럼, 각 튜플로 부터 row와 col의 값만 출력하기 위해 튜플 언패킹 가능
4.6.2 딕셔너리 컴프리헨션
**
{키_표현식 : 값_표현식 for 표현식 in 순회 가능한 객체}
**word = 'letters' letter_counts = {letter: word.count(letter) for letter in word} letter_counts
{‘e’: 2, ‘l’: 1, ‘r’: 1, ‘s’: 1, ‘t’: 2}
word = 'letters' letter_counts = {letter: word.count(letter) for letter in set(word)} letter_counts
{‘e’: 2, ‘l’: 1, ‘r’: 1, ‘s’: 1, ‘t’: 2}
set(word)
{‘e’, ‘l’, ‘r’, ‘s’, ‘t’}
4.6.3 셋 컴프리 헨션
**
{표현식 for 표현식 in 순회 가능한 객체
**a_set = {number for number in range(1, 6) if number % 3 == 1}
print(a_set) type(a_set)
{1, 4} set
4.6.4 제너레이터 컴프리헨션
** 튜플은 컴프리 헨션이 없다! **
number_thing = (number for number in range(1, 6))
print(number_thing) print(type(number_thing))
<generator object
괄호 안의 내용은 제너레이터 컴프리헨션 이다. 이것은 제너레이터 객체를 반환한다.
for number in number_thing: print(number)
1 2 3 4 5
number_thing = (number for number in range(1, 6)) number_list = list(number_thing) number_list
[1, 2, 3, 4, 5]
try_again = list(number_thing) print(try_again)
[]
Comments