반응형
질문
나는 문자열과 None
값의 혼합물을 포함하는 xs
라는 리스트가 있습니다. 어떻게 리스트 내포를 사용하여 각 문자열에 대해 함수를 호출하지만 None
값을 함수에 전달하는 대신 ''
로 변환할 수 있을까요?
저는 다음을 시도해 보았습니다:
[f(x) for x in xs if x is not None else '']
하지만 이것은 SyntaxError
를 반환합니다. 올바른 구문은 무엇인가요?
조건에 따라 값을 제외하는 리스트 내포를 만들려고 하는 경우 List comprehension with condition을 참조하십시오.
만약 두 개 이상의 조건 결과를 고려해야 하는 경우, Python의 조건 표현식은 elif
를 지원하지 않습니다. 대신, if
/else
조건문을 중첩해야 합니다. 자세한 내용은 `elif` in list comprehension conditionals을 참조하십시오.
답변
당신은 완전히 그것을 할 수 있습니다. 그것은 순서 문제일 뿐입니다:
[f(x) if x is not None else '' for x in xs]
일반적으로,
[f(x) if condition else g(x) for x in sequence]
그리고, if
조건만 있는 리스트 컴프리헨션의 경우,
[f(x) for x in sequence if condition]
이는 실제로 다른 언어 구조, 조건 표현식을 사용하며, 이 자체가 컴프리헨션 구문의 일부가 아니며, for…in
뒤의 if
는 리스트 컴프리헨션의 일부이며 소스 이터러블에서 요소를 필터링하는 데 사용됩니다.
조건 표현식은 어떤 조건에 따라 두 표현식 값 중 하나를 선택하려는 모든 상황에서 사용할 수 있습니다. 이는 다른 언어에서 존재하는 삼항 연산자 ?:
와 동일합니다. 예를 들어:
value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')
반응형
댓글