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 }