13 함수 진급---교체기

2353 단어
for 순환에 직접적으로 작용할 수 있는 데이터 유형은 다음과 같은 몇 가지가 있다는 것을 우리는 이미 알고 있다.
일류는 집합 데이터 형식, 예를 들어list,tuple,dict,set,str 등이다.
한 종류는generator입니다. 생성기와 yield가 있는generator function을 포함합니다.
for 순환에 직접적으로 작용할 수 있는 대상을 일괄적으로 교체 가능한 대상: Iterable라고 부른다.
isinstance()를 사용하여 객체가 Iterable 객체인지 여부를 판단할 수 있습니다.
>>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False

생성기는 for 순환에 작용할 뿐만 아니라, 넥스트 () 함수에 의해 끊임없이 호출되어 다음 값을 되돌릴 수 있으며, 마지막에 StopIteration 오류가 발생하여 다음 값을 되돌릴 수 없다는 것을 나타낼 때까지 되돌릴 수 있다.
*next () 함수에 호출되어 다음 값을 계속 되돌릴 수 있는 대상을 교체기: Iterator라고 합니다.
isinstance()를 사용하여 개체가 Iterator 개체인지 여부를 판단할 수 있습니다.
>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False

생성기는 모두 Iterator의 대상이지만list,dict,str는 Iterable이지만 Iterator가 아니다.
list, dict,str 등의 Iterable를 Iterator로 변환하려면 iter () 함수를 사용할 수 있습니다.
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True

왜list,dict,str 등 데이터 형식이 Iterator가 아니냐고 물어볼 수도 있습니다.
이는 파이톤의 Iterator 대상이 하나의 데이터 흐름을 나타내기 때문에 Iterator 대상은next () 함수에 호출되어 다음 데이터를 계속 되돌려주고 데이터가 없을 때까지StopIteration 오류를 던질 수 있기 때문이다.이 데이터 흐름을 질서정연한 서열로 볼 수 있지만, 우리는 서열의 길이를 미리 알 수 없고,next () 함수를 통해 필요에 따라 다음 데이터를 계산할 수 있기 때문에 Iterator의 계산은 타성적이며, 다음 데이터를 되돌려야 할 때만 계산할 수 있다.
Iterator는 전체 자연수와 같은 무한한 데이터 흐름을 나타낼 수 있다.리스트를 사용하는 것은 전체 자연수를 영원히 저장할 수 없다.
소결
for 순환에 작용할 수 있는 모든 대상은 Iterable 유형이다.
넥스트 () 함수에 작용할 수 있는 대상은 모두 Iterator 형식으로 타성 계산의 서열을 나타낸다.
집합 데이터 형식인list, dict,str 등은 Iterable이지만 Iterator는 아니지만 iter () 함수를 통해 Iterator 대상을 얻을 수 있습니다.
Python3의 for 순환은 본질적으로next() 함수를 끊임없이 호출함으로써 이루어진다. 예를 들어 다음과 같다.
for x in [1, 2, 3, 4, 5]:
    pass
 :
#  Iterator :
it = iter([1, 2, 3, 4, 5])
#  :
while True:
    try:
        #  :
        x = next(it)
    except StopIteration:
        #  StopIteration 
        break

좋은 웹페이지 즐겨찾기