Code Note
[Python] list comprehension 중 if else 필터링
Woomii
2022. 1. 28. 16:16
728x90
반응형
List comprehension 구문 안에 if else 문을 넣고 싶었는데, 항상 형식을 잊어먹어 여기에 정리해 두고자 합니다.
1. 문자열 리스트
[스크립트]
# =============================================================================
# 문자열을 이용한 List comprehension
# =============================================================================
str_list = ['apple', 'orange', 'mango', 'applemango', 'melon', 'watermelon']
# 특정 문자열(applemango)이 찾고자하는 문자열(apple)을 포함하고 있는지 확인
if 'apple' in 'applemango':
print('applemango contains "apple"')
if 'orange' not in 'applemango':
print('applemango NOT contains "orange"')
# 문자열에 mango 포함된 경우
mango_list = [i for i in str_list if 'mango' in i]
print(mango_list)
# 문자열에 melon 포함된 경우
melon_list = [i for i in str_list if 'melon' in i]
print(melon_list)
[출력 결과]
applemango contains "apple"
applemango NOT contains "orange"
['mango', 'applemango']
['melon', 'watermelon']
(+ 추가) 판다스 Series를 이용한 필터링
[스크립트]
# pandas import
import pandas as pd
# 리스트를 pandas Series로 바꾼 뒤 str.contains() 연산자 적용
str_series = pd.Series(str_list)
mango_contains = str_series.str.contains('mango')
print(mango_contains)
mango_series = str_series[mango_contains]
print(mango_series)
[출력 결과]
0 False
1 False
2 True
3 True
4 False
5 False
dtype: bool
2 mango
3 applemango
dtype: object
2. 숫자 리스트
[스크립트]
# =============================================================================
# 숫자를 이용한 List comprehension
# =============================================================================
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
# 리스트에서 3의 배수만 찾고 100을 곱하기
three_times100 = [i*100 for i in num_list if i % 3 == 0]
print(three_times100)
# 리스트에서 3의 배수만 찾고 100을 곱하기
three_times100_else = [x*100 if x%3 == 0 else x for x in num_list]
print(three_times100_else)
[출력 결과]
[300, 600, 900, 1200, 1500, 1800]
[1, 2, 300, 4, 5, 600, 7, 8, 900, 10, 11, 1200, 13, 14, 1500, 16, 17, 1800, 19, 20]
반응형