반응형
한 줄 목록 이해 : if-else 변형
파이썬 목록 이해 구문에 대한 자세한 내용입니다. 주어진 범위의 홀수 목록을 생성하는 목록 이해력이 있습니다.
[x for x in range(1, 10) if x % 2]
이것은 필터를 만듭니다-짝수 ( if x % 2
)를 제거하는 소스 목록이 있습니다. 나는 if-then-else와 같은 것을 사용하고 싶습니다. 다음 코드는 실패합니다 :
>>> [x for x in range(1, 10) if x % 2 else x * 100]
File "<stdin>", line 1
[x for x in range(1, 10) if x % 2 else x * 100]
^
SyntaxError: invalid syntax
if-else와 같은 파이썬 표현식이 있습니다.
1 if 0 is 0 else 3
목록 이해 내에서 사용하는 방법?
x if y else z
각 요소에 대해 반환하는 표현식의 구문입니다. 따라서 다음이 필요합니다.
[ x if x%2 else x*100 for x in range(1, 10) ]
혼동은 첫 번째 예에서는 필터 를 사용 하지만 두 번째 예에서는 필터 를 사용하지 않는다는 사실에서 발생합니다 . 두 번째 예에서는 삼항 연산자 식을 사용하여 각 값을 다른 값 에만 매핑 합니다.
필터를 사용하려면 다음이 필요합니다.
[ EXP for x in seq if COND ]
필터가 없으면 다음이 필요합니다.
[ EXP for x in seq ]
두 번째 예에서 표현은 "복잡한"표현으로, 이에는 if-else
.
[x if x % 2 else x * 100 for x in range(1, 10) ]
또 다른 해결책은 누군가가 좋아할 수 있기를 바랍니다.
사용 : [거짓, 참] [식]
>>> map(lambda x: [x*100, x][x % 2 != 0], range(1,10))
[1, 200, 3, 400, 5, 600, 7, 800, 9]
>>>
목록 이해를 통해 그렇게 할 수 있습니다.
A=[[x*100, x][x % 2 != 0] for x in range(1,11)]
print A
나는 이것을 할 수 있었다
>>> [x if x % 2 != 0 else x * 100 for x in range(1,10)]
[1, 200, 3, 400, 5, 600, 7, 800, 9]
>>>
참고 URL : https://stackoverflow.com/questions/17321138/one-line-list-comprehension-if-else-variants
반응형
'programing tip' 카테고리의 다른 글
Android에서 runOnUiThread를 어떻게 사용합니까? (0) | 2020.06.15 |
---|---|
vim에서 더 유용한 상태 표시 줄? (0) | 2020.06.15 |
스칼라의 패턴 매칭 시스템에서 비교 연산자 사용 (0) | 2020.06.15 |
파일을 선택할 때 업로드 양식을 자동 제출하려면 어떻게합니까? (0) | 2020.06.15 |
다른 테이블에없는 행을 선택하십시오. (0) | 2020.06.15 |