이 입력은 파이썬 'any' 기능과 어떻게 작동합니까?
의 python docs 페이지에서 에 해당하는 코드는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
일부 항목의 목록인 iitable입니다.포함된 경우[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
이것은 생성자 식이라고 불리는 다른 종류의 반복 가능한 표현입니다.생성자 표현식이 파이썬에 추가되기 전에, 당신은 목록 이해를 만들었을 것입니다. 이는 매우 유사하지만 주변 환경을 포함합니다.[]
의:[x > 0 for x in lst]
에서lst
재중[-1, -2, 10, -4, 20]
다음과 같은 목록을 얻을 수 있습니다.[False, False, True, False, True]
그러면 이 내부 값이 다음으로 전달됩니다.any
함수, 반환됩니다.True
적어도 하나는 있기 때문에True
가치.
그러나 생성기 식을 사용하면 Python은 더 이상 내부 목록을 생성할 필요가 없습니다.True(s)
그리고.False(s)
값은 다음과 같이 생성됩니다.any
함수는 생성자 식에 의해 한 번에 하나씩 생성된 값을 반복합니다.그리고 그 이후로.any
짧은 시간 동안, 그것은 첫 번째를 보는 즉시 반복을 멈출 것입니다.True
가치. 이것은 당신이 만든 것이라면 특히 유용할 것입니다.lst
와 같은 것을 사용하여lst = range(-1,int(1e9))
(또는)xrange
Python2.x를 사용하는 경우).이 표현이 10억 개 이상의 항목을 생성하더라도,any
세 번째 엔트리까지 가면 됩니다.1
그것은 평가합니다.True
위해서x>0
등등any
돌아올 수 있습니다True
.
만약 당신이 목록 이해를 만들었다면, Python은 먼저 메모리에 10억 개의 요소로 구성된 목록을 만든 후에 그것을 전달해야 했을 것입니다.any
그러나 생성기 표현식을 사용하면 다음과 같은 Python의 내장 함수를 사용할 수 있습니다.any
그리고.all
일찍 일어나자마자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
첫 단락 를 사용합니다.True
왜냐하면 가증스러운 것은.
(x > 0 for x in list)
:x > 0
둘 중 하나를 반환합니다.True
또는False
그래서 당신은 많은 불을 가지고 있습니다.
간단히 말해서, any()는 이 작업을 수행합니다. 목록에서 하나의 충족 값을 발견하더라도 조건에 따라 true를 반환하고 그렇지 않으면 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-does-this-input-work-with-the-python-any-function
'programing' 카테고리의 다른 글
Node.js에서 대용량 로그 파일 구문 분석 - 한 줄씩 읽기 (0) | 2023.07.25 |
---|---|
Spring Boot @RepositoryRestResource를 특정 URL에 매핑하려면 어떻게 해야 합니까? (0) | 2023.07.25 |
디스크에 쓰지 않고 .zip 파일 다운로드 및 압축 풀기 (0) | 2023.07.25 |
Old Style Oracle Outer Join 구문 - 왼쪽 Outer Join에서 등호의 오른쪽에 (+)를 찾는 이유는 무엇입니까? (0) | 2023.07.25 |
가능한 모든 방법으로 목록을 쌍으로 나누는 방법 (0) | 2023.07.25 |