파이썬 any () 함수는 정확히 어떻게 작동합니까?
에 대한 Python 문서 페이지 any
에서 any()
함수에 해당하는 코드 는 다음과 같습니다.
def any(iterable):
for element in iterable:
if element:
return True
return False
이 함수는이 형식으로 호출하면 테스트 할 요소를 어떻게 알 수 있습니까?
any(x > 0 for x in list)
함수 정의에서 볼 수있는 것은 반복 가능한 객체를 전달하고 있다는 것뿐입니다. for
루프는 내가 뭔가를 찾고 있다는 것을 어떻게 알 수 > 0
있습니까?
당신이 사용하는 경우 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
반환 하는 함수로 전달됩니다 .True
True
그러나으로 발전기 표현 , 파이썬은 더 이상의 내부 목록을 만들 수 없습니다 True(s)
및 False(s)
값은으로 생성됩니다, any
발전기 식으로 한 번에 하나씩 생성 된 값을 통해 함수를 반복합니다. 그리고 , 이후로 any
는 처음 본다으로 단락, 그것은 바로 반복하는 중지됩니다 True
값입니다. 이것은 (또는 Python2.x를 사용하는 경우) lst
와 같은 것을 사용하여 만든 경우 특히 유용합니다 . 이 표현은 억 항목을 통해 생성에도 불구하고, 단지 그것을에 얻을 때 세 번째 항목으로까지 가야 하는 평가하여, 대한 , 그래서 반환 할 수 있습니다 .lst = range(-1,int(1e9))
xrange
any
1
True
x>0
any
True
list comprehension을 만들었다면 Python은 먼저 메모리에 10 억 개의 요소 목록을 만든 다음이를 any
. 그러나 사용하여 발전기 식을 , 당신은 같은 파이썬의 내장 기능을 가질 수 any
와 all
A와 마자, 일찍 중단 True
또는 False
값을 볼 수 있습니다.
>>> names = ['King', 'Queen', 'Joker']
>>> any(n in 'King and john' for n in names)
True
>>> all(n in 'King and Queen' for n in names)
False
여러 줄의 코드를 하나로 줄입니다. 다음과 같이 긴 코드를 작성할 필요가 없습니다.
for n in names:
if n in 'King and john':
print True
else:
print False
(x > 0 for x in list)
그 함수 호출에서 생성기 표현식을 생성합니다.
>>> nums = [1, 2, -1, 9, -5]
>>> genexp = (x > 0 for x in nums)
>>> for x in genexp:
print x
True
True
False
True
False
어느 any
첫 번째 개체 평가하는 조우에 사용하고 shortcircuitsTrue
iterable이
(x > 0 for x in list)
또는 x > 0
하나 를 반환 하므로 부울 반복이 가능합니다.True
False
Simply saying, any() does this work : according to the condition even if it encounters one fulfilling value in the list, it returns true, else it returns false.
list = [2,-3,-4,5,6]
a = any(x>0 for x in lst)
print a:
True
list = [2,3,4,5,6,7]
a = any(x<0 for x in lst)
print a:
False
참고URL : https://stackoverflow.com/questions/16505456/how-exactly-does-the-python-any-function-work
'Programing' 카테고리의 다른 글
Bootstrap에서 ScrollSpy의 오프셋을 어떻게 설정합니까? (0) | 2020.08.26 |
---|---|
.NET에서 Microsoft.Office.Interop.Excel을 사용하려면 어떤 참조가 필요합니까? (0) | 2020.08.26 |
numpy 배열의 일부 차원 만 평면화하는 방법 (0) | 2020.08.26 |
Python3으로 INI 파일을 읽고 쓰는 방법은 무엇입니까? (0) | 2020.08.26 |
jQuery.ajax에서 콘텐츠 유형을 'application / json'으로 설정할 수 없습니다. (0) | 2020.08.25 |