티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
if else in a list comprehension
리스트 내포에서 if else 구문 사용하기
문제 내용
Given a list xs
:
리스트 xs가 주어졌다고 가정해보자.
xs = [22, 13, 45, 50, 98, 69, 43, 44, 1]
For numbers above 45 inclusive, add 1; and for numbers less than 45, add 5.
45 이상의 숫자는 1을 더하고 45 미만의 숫자는 5를 더하라.
높은 점수를 받은 Solution
>>> xs = [22, 13, 45, 50, 98, 69, 43, 44, 1]
>>> [x+1 if x >= 45 else x+5 for x in xs]
[27, 18, 46, 51, 99, 70, 48, 49, 6]
Do-something if <condition>
, else do-something else.
만약 <조건>이면 어떤 작업을 하고, 그렇지 않으면 다른 작업을 하세요.
가장 최근 달린 Solution
Like in [a if condition1 else b for i in list1 if condition2]
, the two if
s with condition1
and condition2
doing two different things. The part (a if condition1 else b)
is from a lambda expression:
예를 들어 [a if condition1 else b for i in list1 if condition2]와 같은 구문에서, condition1과 condition2의 두 가지 조건은 서로 다른 작업을 수행합니다. (a if condition1 else b) 부분은 람다 표현식에서 가져온 것입니다:
lambda x: a if condition1 else b
while the other condition2
is another lambda:
다른 condition2도 다음과 같은 람다 표현식입니다:
lambda x: condition2
Whole list comprehension can be regard as combination of map
and filter
:
전체 리스트 내포는 map과 filter의 결합으로 볼 수 있습니다:
map(lambda x: a if condition1 else b, filter(lambda x: condition2, list1))
출처 : https://stackoverflow.com/questions/4406389/if-else-in-a-list-comprehension
'개발 > 파이썬' 카테고리의 다른 글
판다스에서 하나를 제외한 모든 열 선택하기 (0) | 2023.01.25 |
---|---|
문자열을 문자 리스트로 분할하기 (0) | 2023.01.24 |
리스트를 청크(chunk) 단위로 반복하는 방법 (0) | 2023.01.24 |
파일 열 때 't' 옵션의 용도 (0) | 2023.01.21 |
딕셔너리를 JSON으로 변환하기 (0) | 2023.01.19 |