Coding Diary.

(파이썬) 리스트 컴프리헨션(List Comprehension)과 사용하는 이유 본문

Coding/Python

(파이썬) 리스트 컴프리헨션(List Comprehension)과 사용하는 이유

life-of-nomad 2024. 6. 10. 13:34
728x90
반응형
이번 글에서는 리스트 컴프리헨션(list comprension)을 사용하여 빠르고 간단하게 리스트를 만드는 방법에 대해 알아보겠습니다.

 

1. 리스트 컴프리헨션(List Comprehension)

  • 리스트 컴프리헨션은 직관적으로 리스트를 생성하는 방법입니다. 
  • 대괄호 "[", "]"로 감싸고 내부에 for문과 if 문을 사용하여 반복하며 조건에 만족하는 것만 리스트로 생성할 수 있습니다.
  • 리스트를 생성하고 for문과 if문을 사용하지 않고 리스트 컴프리헨션을 사용하는 이유는 직관적이고, 여러줄에 쓸걸 한줄에 만들어 주기 때문입니다. 
  • 심지어 속도도 더 빠릅니다.
  • 아래의 코드를 살펴보겠습니다.
capitalized_cities = []
for city in cities:
    capitalized_cities.append(city.title())
  • 이 코드를 리스트 컴프리헨션을 사용하면 for 반복문을 사용하여 한 줄로 줄일 수 있습니다.
capitalized_cities = [city.title() for city in cities]

 

 

2. 리스트 컴프리헨션 안의 조건문 (if문)

  • 리스트 컴프리헨션에 조건문을 추가할 수도 있습니다.
  • iterable 뒤에 키워드 if를 사용하여 반복할 때마다 조건을 검사할 수 있습니다.
  • 9보다 작은 짝수의 제곱만 리스트에 추가해보겠습니다.
squares = [x**2 for x in range(9) if x % 2 == 0]
print(squares)
>>> [0, 4, 16, 36, 64]
  • 만약, 아래와 같이 else를 추가하면 구문 오류가 납니다.
squares = [x**2 for x in range(9) if x % 2 == 0 else x + 3]
  • else 를 추가하고 싶으면 조건문을 리스트 컴프리헨션 시작 부분, 즉 표현식 바로 뒤로 옮겨야 합니다.
squares = [x**2 if x % 2 == 0 else x + 3 for x in range(9)]

 

 

3. 연습문제

(1) 이름의 소문자를 쓰는 리스트 만들기

names = ["Rick Sanchez", "Morty Smith", "Summer Smith", "Jerry Smith", "Beth Smith"]
first_names = [name.split()[0].lower() for name in names]
print(first_names)

>>> ['rick', 'morty', 'summer', 'jerry', 'beth']

 

(2) 3의 배수 20개 포함하는 리스트 만들기

multiples_3 = [x * 3 for x in range(1, 21)]
print(multiples_3)

>>> [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60]

 

(3) 65점 까지 passed인 이름의 리스트 만들기

scores = {
             "Rick Sanchez": 70,
             "Morty Smith": 35,
             "Summer Smith": 82,
             "Jerry Smith": 23,
             "Beth Smith": 98
          }
          
passed = [name for name, score in scores.items() if score >= 65]
print(passed)

>>> ['Rick Sanchez', 'Summer Smith', 'Beth Smith']

 

🔻(참고)딕셔너리 items🔻

 

(파이썬) for 반복문과 get 메소드로 딕셔너리(dictionary) 만들기, items로 키와 값 쌍 얻기

지난 글에서 for 반복문에 대한 개념과 간단한 문제에 대해 알아보았습니다. 이번 글에서는 for 반복문과 get 메소드 이용해서 딕셔너리를 만드는 방법에 대해 알아보겠습니다. 🔻(참고) for 반복

life-of-nomad.tistory.com

 

728x90
반응형