이 사이트에서 다른 사람으로부터 팁을 주면서, 나는 논리적 연산자를 사용하여 if 문과 함께 for 루프를 사용하는 지름길로서리스트 이해에서 조건 논리를 표현 해왔다.0과 파이썬 논리 연산자를 사용하여 문제가
예를 들어 [[예, 아니요], [아니요], [예], [예]로 바꾸고 싶은 목록 [1, 0, 0, 1, 1] 나는 이것을 다음과 같이 할 수있다 :
original = [1, 0, 0, 1, 1]
new = [((x==1) and "Yes") or "No" for x in original]
문제는 내가 이런 식으로 0을 가진 논리 연산자를 사용할 때 매우 이상한 결과를 얻는다는 것이다. 결과는 목록 이해력을 사용하는지 여부에 관계없이 발생합니다.
이 :
print((True and 1.0) or "Wrong")
print((True and -1.0) or "Wrong")
print((True and "1.0") or "Wrong")
print((True and 1) or "Wrong")
올바르게 (내가 생각하는) 출력 :
그러나1.0
-1.0
1.0
1
이 :
print((True and 0) or "Wrong")
print((True and 0.0) or "Wrong")
출력 :
Wrong
Wrong
,536,
파이썬이 0과 0.0을 모두 False로 변환하고 다른 모든 다른 값을 True로 변환한다고 생각합니다.
a. 이 경우 및/또는 b. 크리스 (A 람다 또는 뭔가) 지능형리스트에서 난 후 어떤 다른 방법을 달성
많은 감사하는 방법이
에서 발췌. – Amber
''0''과 당신이 원하는대로 작동하지 않는 논리 연산자로 무엇을하려고하는지 실제로 이해하지 못합니다. 물론 "샘플"코드는 정상적으로 작동합니다. 원하는 것을하지 않는 샘플을 제공 할 수 있습니까? –