반복문을 이용해 몇 줄에 걸쳐 입력하는 코드를 한 줄에 입력하는 방식이다
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')] 의 리스트가 출력된다.
word = "programming" alphabets = {x for x in woord} print(alphabets)
{'i', 'n', 'm, 'o', 'a', 'g', 'p', 'r'}
set이므로 중복없이 요소들을 출력하되, 순서 없이 랜덤하게 출력되는 결과를 확인할 수 있다
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 이상인 물품만 가격을 인상하는 딕셔너리