Python: List Comprehension

BY Jung·2021년 12월 6일
0
post-custom-banner

반복문을 이용해 몇 줄에 걸쳐 입력하는 코드를 한 줄에 입력하는 방식이다

numbers = [ ]
for i in range(1,6):
	numbers.appned(2**i)
print(numbers)

numbers = [2**i for i in range(1,6)]
print(numbers)

는 완전히 같은 결과를 출력한다

조건문도 혼합하여 사용이 가능하다

import math
numbers = [49, 64, 81, 100, 121]
new_list = [math.sqrt(n) for n in numbers]
print(new_list)

는 [7.0, 8.0, 9.0, 10.0, 11.0] 을 출력하게 되는데,
아래와 같은 조건을 추가한다면

new_list = [math.sqrt(n) for n in numbers if n % 2 == 0

짝수만 리스트에 저장하게 된다

Nested List Comprehension도 사용 가능하다

team1 = ["Janet", "Arya", "Mary"]
team2 = ["Evan", "Jake", "Randy"]
new_list = [(x,y) for x in team1 for y in team2]
print(new_list)

team1 의 반복문 안에 team2의 반복문이 들어가 실행하여 각 리스트의 요소를 튜플로 저장하므로
[('Janet, 'Evan'), ('Janet, 'Jake'), ("Janet', 'Randy'), ('Arya', 'Evan').....('Mary', 'Randy')] 의 리스트가 출력된다.

Set Comprehension

word = "programming"
alphabets = {x for x in woord}
print(alphabets)

{'i', 'n', 'm, 'o', 'a', 'g', 'p', 'r'}
set이므로 중복없이 요소들을 출력하되, 순서 없이 랜덤하게 출력되는 결과를 확인할 수 있다

Dictionary Comprehension

numbers = [1,2,3,4,5]
square_dict = dict()
for num in numbers:
	square_dict[num] = num**2
print(square_dict)

루트 딕셔너리를 반복문을 이용해 구현

numbers = [1,2,3,4,5]
square_dict = {num:num**2 for num in numbers}
print(square_dict)

루트 딕셔너리를 한 줄로 구현(comprehension)

old_price ={"milke": 1.02, "coffee": 2.5, "bread": 2.5}
new_price = {key: value*1.5 if value > 2 else value for (key, value) in old_price.items()}
print(new_price)

값이 2 이상인 물품만 가격을 인상하는 딕셔너리

profile
Slow and steady wins the race
post-custom-banner

0개의 댓글