| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- baekjoon
- pointer
- Data Science
- OOP
- function
- C++
- 파이썬
- Class
- 백준
- Object Oriented Programming
- raw data
- const
- vscode
- Python
- 함수
- assignment operator
- Deep Learning
- 포인터
- Pre-processing
- pass by reference
- 티스토리챌린지
- 문자열
- string
- 오블완
- 반복문
- array
- 알고리즘
- programming
- 배열
- predictive analysis
- Today
- Total
Channi Studies
[python] list comprehension 리스트 컴프리헨션 본문
모두가 알다시피 python의 장점 중 하나는 간단한 문법이다.
다른 언어에서 많은 줄을 사용해야 만들 수 있는 리스트를 한 줄로 표현할 수 있다.
list comprehension을 잘 이용하면 코드가 훨씬 간결하고 이뻐보인다.
예시를 들어보겠다
정수 리스트가 주어졌을 때, 각 요소에 1을 더한 새로운 리스트를 만들고 싶을 때,
list comprehension을 이용하지 않으면 for문을 활용하여 다음과 같이 작성할 수 있다.
my_list = [1, 2, 3]
new_list = []
for num in my_list:
new_list.append(num + 1)
print(new_list) # = [2, 3, 4]
하지만, list comprehension을 이용하면 다음과 같이 작성할 수 있다.
my_list = [1,2,3]
new_list = [num + 1 for num in my_list]
print(new_list) # = [2, 3, 4]
확실히 3줄이였던 코드가 훨씬 깔끔하게 한 줄로 표현이 되었다.
list comprehension에는 추가적으로 조건을 부여할 수 있다.
예를 들어 아까의 예시에서, 홀수 숫자(1, 3)만 두배를 하는 조건을 걸어보자
my_list = [1, 2, 3, 4, 5 ,6]
new_list = [num * 2 if num % 2 == 1 else num for num in my_list]
print(new_list) # = [2, 2, 6, 4, 10, 6]
만약 코드를 다음과 같이 짜면 오류가 발생하니, 순서를 숙지하도록 하자
my_list = [1, 2, 3, 4, 5 ,6]
new_list = [num * 2 for num in my_list if num % 2 == 1 else num ] # Syntax Error
print(new_list)
또한, 코드를 다음과 같이 짜면 짝수인 경우를 무시하게 된다.
조건문이 모든 요소를 대상으로 하고 있는지를 확실히 하자.
my_list = [1, 2, 3, 4, 5 ,6]
new_list = [num * 2 for num in my_list if num % 2 == 1]
print(new_list) # = [2, 6, 10]
list comprehension은 숫자 리스트에서만 적용되는 것이 아니다.
다음과 같은 예시를 보면, 문자 리스트에서 적용됨을 알 수 있다. (문자열.upper() 메소드는 모든 문자열을 대문자로 변경한다.)
name_list = ["Ricky", "Isabelle", "Hailey", "Johnson", "Heiden"]
new_name_list = [name.upper() for name in name_list]
print(new_name_list) # = ["RICKY", "ISABELLE", "HAILEY", "JOHNSON", "HEIDEN"]
문자열 리스트에서도 역시, 조건문을 통해 일부 문자에만 적용하는 것이 가능하다.
아까의 예시에서 글자 수가 6개인 문자만 대문자로 바꾸어 리스트로 만들어보자.
name_list = ["Ricky", "Isabelle", "Hailey", "Johnson", "Heiden"]
new_name_list = [name.upper() if len(name) == 6 else name for name in name_list]
print(new_name_list) # = ["Ricky", "Issabelle", "HAILEY", "Johnson", "HEIDEN"]
정상적으로 적용되어 글자 수가 6개인 Hailey, Heiden에만 upper()메소드가 적용된 것을 확인할 수 있다.
'python' 카테고리의 다른 글
| [programmers] 문자열 여러번 뒤집기 (python) (8) | 2023.10.11 |
|---|---|
| [python] tkinter miles km converter / tkinter 마일 킬로미터 변환기 (3) | 2023.10.10 |
| [python] *args 과 **kwargs (6) | 2023.10.10 |
| [python] code-runner extension 파일 실행 시 터미널을 초기화, file path 출력 안되게 변경 (0) | 2023.10.08 |
| [python] Turtle graphics로 뱀게임 만들기 (0) | 2023.09.27 |