본문 바로가기
python/basic

[Python] 리스트 컴프리헨션(List Comprehension)

by wjwkddyd221001 2023. 6. 3.

개요

리스트 컴프리헨션(List Comprehension)은 기존의 리스트를 활용해 새로운 리스트를 만들 수 있습니다.

이를 짧은 구문으로 나타낼 수 있습니다.

 

조건문, for문, 수식이나 함수를 적용할 수 있습니다.

 

아래와 같은 형식을 갖추고 있습니다.

newlist = [expression for item in iterable if condition == True]

 

for 문

iterable에 리스트, range, 튜플, 집합이 들어갈 수 있습니다.

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x for x in fruits]

newlist = [x for x in range(10)]

 

for 문을 여러 번 중첩해서 사용할 수 있습니다. 

newlist = [(x, y) for x in range(2) for y in range(3)]
print(newlist)


# 다음과 같이 출력됩니다.
'''
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
'''

 

if 조건문

iterable 뒤에 if 조건문을 붙일 수 있습니다. 

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x for x in fruits if x != "apple"]
print(newlist)


# 다음과 같이 표시됩니다.
'''
['banana', 'cherry', 'kiwi', 'mango']
'''

 

필요하다면 if 조건문을 여러 번 중첩해서 사용할 수 있습니다.

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x for x in fruits if x != "apple" if x != "banana"]
print(newlist)

# 다음과 같이 출력됩니다.
'''
['cherry', 'kiwi', 'mango']
'''

 

수식 적용

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x.upper() for x in fruits]
print(newlist)


# 다음과 같이 표시됩니다.
'''
['APPLE', 'BANANA', 'CHERRY', 'KIWI', 'MANGO']
'''

 

if 조건문을 적용할 수도 있습니다.

위에서는 iterable에 적용되는 if문을 for문의 오른쪽에 적었지만, 여기서는 수식에 적용되는 if문을 for문의 왼쪽에 적게됩니다. 반드시 if 문 다음에는 else문이 와야 합니다.

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x if x != "banana" else "orange" for x in fruits]
print(new_list)


# 다음과 같이 출력됩니다.
'''
['apple', 'orange', 'cherry', 'kiwi', 'mango']
'''

 

 

참고자료

https://www.w3schools.com/python/python_lists_comprehension.asp