티스토리 뷰

반응형

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 ifs 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

반응형
댓글
공지사항
최근에 올라온 글