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]
반응형