당신이 사용하는 경우 any(lst)당신은보고 lst일부 항목의 목록 인의 반복 가능한 것입니다. 가 포함 된 경우 [0, False, '', 0.0, [], {}, None](모든이의 논리 값이있는 False) 다음 any(lst)이 될 것입니다 False. lst다음 중 하나라도 포함 된 경우 [-1, True, "X", 0.00001](모두로 평가됨 True) any(lst)은입니다 True.
게시 한 코드 x > 0 for x in lst에서 이것은 생성기 표현식 이라는 다른 종류의 반복 가능 항목 입니다. 생성기 표현식이 Python에 추가되기 전에 목록 이해력 을 만들었을 것입니다 . 이는 매우 유사하지만 주변에 []'s :를 사용 [x > 0 for x in lst]합니다. 로부터 lst포함 [-1, -2, 10, -4, 20], 당신이 얻을 것 이해 목록을 : [False, False, True, False, True]. 이 내부 값은 적어도 하나의 값 이 있으므로를 any반환 하는 함수로 전달됩니다 .TrueTrue
그러나 생성기 표현식을 사용 하면 Python은 더 이상 True(s)및의 내부 목록을 False(s)생성 할 필요가 없으며 any생성기 표현식에 의해 한 번에 하나씩 생성 된 값을 함수가 반복 할 때 값이 생성됩니다. 그리고 , 이후로 any는 처음 본다으로 단락, 그것은 바로 반복하는 중지됩니다 True값입니다. 이것은 (또는 Python2.x를 사용하는 경우) lst같은 것을 사용하여 만든 경우 특히 유용합니다 . 이 표현은 억 항목을 통해 생성에도 불구하고, 단지 그것을에 얻을 때 세 번째 항목으로까지 가야 하는 평가하여, 대한 , 그래서 반환 할 수 있습니다 .lst = range(-1,int(1e9))xrangeany1Truex>0anyTrue
list comprehension을 만들었다면 Python은 먼저 메모리에 10 억 개의 요소 목록을 만든 다음이를 any. 그러나 사용하여 발전기 식을 , 당신은 같은 파이썬의 내장 기능을 가질 수 any와 allA와 마자, 일찍 중단 True또는 False값을 볼 수 있습니다.
any(x > 0 for x in list)단지any((x > 0 for x in list)).