def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
[1,2,3]
은 목록이지만 True 또는 False 일 수있는 부울식이 아닌 것 같습니다. 그러나이 함수는 왜 목록 ([1,2,3])
이 참이라고 생각합니까?다음에 오는 성명은 무엇입니까?
def check():
if [1,2,3]:
return [2,3,4]
check()
[2, 3, 4]
[1,2,3]
은 목록이지만 True 또는 False 일 수있는 부울식이 아닌 것 같습니다. 그러나이 함수는 왜 목록 ([1,2,3])
이 참이라고 생각합니까?다음에 오는 성명은 무엇입니까?
임의의 표현을 if
또는 while
의 조건으로 사용할 수 있습니다. 표현식의 진리 값을 평가하는 방법은 https://docs.python.org/2.4/lib/truth.html을 참조하십시오. 에 명시된 바와
python documentation on "Truth Value Testing" :
다음 값이 잘못된 것으로 간주된다
[...]
- 빈 서열, 예를 들면,
''
,()
,[]
.[...]
다른 모든 값이 true로 간주됩니다- 많은 종류의 객체가 항상 해당 있도록.
그래서 어느하지 않은 빈 목록 True
로 평가되고 (이 예 numpy.ndarray
에 대한처럼 __bool__
또는 __len__
방법의에이 예외를 throw하지 않는 경우) 어떤 파이썬 객체는 부울 맥락에서 평가 될 수있다.
필자가 아는 한 모든 유형의 표현식은 빈 목록/튜플, 기술적으로는 문자 목록으로 간주 될 수있는 빈 문자열 또는 숫자 0이 아닌 한 "참"으로 간주됩니다.
PS 재미있는 사실처럼 숫자 0.000001은 True를 반환합니다.
어쩌면 이렇게 될까요?
def checkList():
if all(x in list2 for x in list1):
return [ 2,3,4 ]
list1= [ 1,2,3 ]
list2= [ 1,2,3 ]
print(checkList(list1,list2))
당신은 정말이 필요
여기를 살펴 SAnyway : https://docs.python.org/3/library/stdtypes.html#truth-value-testing
있는 [-비어 있지리스트 (https://docs.python.org/3/library/stdtypes.html#truth- 가치 테스트)는 사실이라고 간주됩니다. – MSeifert
부울식이 필요한 모든 식을 사용할 수 있습니다. – Barmar
[진실 가치 테스트] (https://docs.python.org/3/library/stdtypes.html#truth-value-testing)에서 파이썬에서 참 및 거짓으로 간주되는 것을 확인하십시오. –