[파이썬] 파이썬 리스트 컴프리헨션 / 프로그래머스 메뉴 리뉴얼

미음제

·

2022. 1. 13. 17:15

정수 1부터 10까지가 담긴 리스트를 생성하려면 파이썬에서 다음과 같이 작성한다

 

arr = []
for i in range(1, 11):
    arr.append(i)
print(arr)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

반복문을 통해 정수를 리스트에 넣는 것이다. 이것을 반복문을 활용한 컴프리헨션이라고 한다. 1부터 10까지 담긴 리스트를 생성하는 리스트 컴프리헨션의 형태는 다음과 같다.

 

리스트 컴프리헨션 형태

 

[i for i in range(1, 10)]

 

리스트 = [ 수식 for 항목 in range() ] 형식

 

반복문을 활용해 1부터 10까지가 담긴 리스트를 생성하는 것을 리스트 컴프리헨션 형태로 만들면 다음과 같다.

 

arr = []
for i in range(1, 11):
    arr.append(i)
print(arr)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

brr = [i for i in range(1, 11)]
print(brr)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

리스트 arr와 brr가 동일한 값을 갖게 된다. 리스트 컴프리헨션이 어떻게 작동하는지 간단하게 보면 다음과 같다.

 

리스트를 생성할 때 []를 사용

 

리스트 컴프리헨션을 사용할 때는 리스트 내부에 코드를 작성
반복되는 변수를 :(세미콜론) 뒤가 아닌 for(반복문)문 앞에 사용

 

 

리스트 컴프리헨션 조건문

 

조건문을 사용하는 것은 간단하다. [] 내에 for문을 작성한 후 for문 뒤에 작성하면 된다.

 

arr = []
for i in range(1, 11):
    if i%2 == 0:
        arr.append(i)
print(arr)  # [2, 4, 6, 8, 10]

# 리스트 컴프리헨션 조건문
arr = [i for i in range(1, 11) if i%2 == 0]
print(arr)  # [2, 4, 6, 8, 10]

 

arr = [i for i in range(1,11) if i%2 == 0 and i>= 4]
print(arr)  # [4, 6, 8, 10]

 

리스트 컴프리헨션 다중 반복문

 

리스트 컴프리헨션은 다중 반복문을 지원하고, 쓰인 순서에 따라 작동한다.

 

a = 'abc'
b = '123'
arr = [i for i in a]
brr = [i for i in b]

tmp = [(i, j) for i in arr for j in brr]
print(tmp)
"""
    [
        ('a','1'), ('a','2'), ('a','3'),
        ('b','1'), ('b','2'), ('b','3'),
        ('c','1'), ('c','2'), ('c','3'),
    ]
"""

 


 

예제

 

 

코딩테스트 연습 - 메뉴 리뉴얼

레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서

programmers.co.kr

 

예제 풀이

 

 

GitHub - mieumje/Python_Coding_Test: Python Coding Test & Algorithm

Python Coding Test & Algorithm. Contribute to mieumje/Python_Coding_Test development by creating an account on GitHub.

github.com

 

반응형