Python/파이썬 기초

[Python] Comprehension ⭐

isfp_yykkng 2023. 2. 22. 21:01

Comprehension

Comprehension 파이썬에서만 제공하는 유용한 도구로 List Comprehension과 Dictionary Comprehension이 있다.

List Comprehension ( 리스트 컴프리헨션 )

예1)  [ <계산식> for 문 ]

 

예제 : [ i * i  for  i  in range( 1, 11 ) ] 를 이용해서 1~10 의 숫자를 제곱하여 리스트에 저장

areas = [] # 저장할 리스트
for i in range(1,11):
	areas = areas + [i*i] # 리스트에 값추가 ( = areas.append(i*i) )
print("areas : ", areas)

# areas2 : list comprehension 이용
areas2 = [ i*i for i in range(1,11) ]
print("areas2 : ", areas2)

예2)  [ <계산식>  for문  <조건문> ]

 

예제 : [ i * i  for  i  in range(1,11)  if  i % 2 == 0 ] 를 이용해서 1~10 의 숫자 중 짝수만 제곱하여 리스트에 저장 

areas = [] # 저장할 리스트
for i in range(1,11):
	if i%2 == 0:
		areas = areas + [i*i] # 리스트에 값추가 ( = areas.append(i*i) )
print("areas : ", areas)

# areas2 : list comprehension 이용
areas2 = [ i*i for i in range(1,11) if i%2 == 0 ]
print("areas2 : ", areas2)

예3)  [ <계산식>  for문  for문 ] ⚠️

 

예제 : [ ( x, y ) for  x  in range(15)  for  y  in range(15) ] 를 이용해서 0~14 의 숫자인 이중 for문을 ( x, y) 로 리스트에 저장

cordinate = [ (x,y) for x in range(15) for y in range(15) ]
print(cordinate)

Dictionary Comprehension (딕셔너리 컴프리헨션)

예1)  { <키> : <값>  for  <키>, <값> in enumerate( <리스트> )

 

위의 식을 이용해서 리스트에 담겨있는 값들과 index 값을 딕셔너리에 저장한다.

students = ['태연', '진우', '정현', '하늘', '성진']
students_dict = { "{}번".format(number + 1) : name for number, name in enumerate(students)}
#리스트의 순서대로 나오지는 않음 (딕셔너리의 특징 : 순서x)
print(students_dict) # { '1번':'태연', '5번':'성진', '4번':'하늘', '3번':'정현', '2번':'진우' }

예2)  { <키> : <값>  for  <키>, <값> in zip( <리스트1>, <리스트2> ) 

 

위의 식을 이용해서 리스트1에 담겨있는 값은 key로, 리스트2에 담겨있는 값은 value 쌍으로 딕셔너리에 저장한다.

students = ['태연', '진우', '정현', '하늘', '성진']
scores = [85, 92, 78, 90, 100]

for x, y in zip(students, scores) :
	print(x,y)
# 결과
'''
태연 85
진우 92
정현 78
하늘 90
성진 100
'''

# 위의 결과를 dictionary comprehension으로
score_dic = {student : score for student, score in zip(students, scores)}
print(score_dic) # { '하늘':90, '정현':78, '진우':92, '성진':100, '태연':85 }