python 학습-교체기
for
순환에 직접적으로 작용할 수 있는 데이터 유형은 다음과 같은 몇 가지가 있다는 것을 이미 알고 있다.한 종류는 집합 데이터 유형, 예를 들어
list
,tuple
,dict
,set
,str
등이다.한 종류는
generator
생성기와 테이프 yield
를 포함하는generator function이다.이러한 순환에 직접적으로 작용할 수 있는 대상을 통칭하여 교체 가능한 대상이라고 한다
for
.Iterable
를 사용하여 객체가 isinstance()
인지 여부를 판단할 수 있습니다.>>> 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
생성기는
Iterable
순환에 작용할 뿐만 아니라 for
함수에 의해 끊임없이 호출되어 다음 값을 되돌려받을 수 있다. 마지막에 던져진 next()
오류가 다음 값을 되돌릴 수 없다는 것을 나타낸다.StopIteration
함수에 호출되어 다음 값을 계속 되돌릴 수 있는 대상을 교체기라고 한다. next()
.Iterator
를 사용하여 객체가 isinstance()
인지 여부를 판단할 수 있습니다.>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False
생성기는 모두
Iterator
대상이지만 Iterator
, list
, dict
는 str
이지만 Iterable
는 아니다.Iterator
,list
,dict
등str
을 Iterable
로 바꾸어 사용할 수 있는Iterator
함수:>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True
왜
iter()
,list
,dict
등 데이터 유형이 str
이 아니냐고 물어볼지도 몰라요.파이톤의
Iterator
대상이 하나의 데이터 흐름을 표시하기 때문에 Iterator 대상은 Iterator
함수에 호출되어 다음 데이터를 되돌려주고 데이터가 없을 때까지 next()
오류를 던질 수 있기 때문이다.이 데이터 흐름을 질서정연한 서열로 볼 수 있지만 우리는 서열의 길이를 미리 알 수 없다. StopIteration
함수를 통해 필요에 따라 다음 데이터를 계산할 수 있기 때문에 next()
의 계산은 타성이다. 다음 데이터를 되돌려야 할 때만 계산할 수 있다.Iterator
는 심지어 무한한 데이터 흐름, 예를 들어 전체 자연수를 나타낼 수 있다.리스트를 사용하는 것은 전체 자연수를 영원히 저장할 수 없다.소결
Iterator
순환에 작용할 수 있는 대상은 모두 for
유형이다.Iterable
함수에 작용할 수 있는 대상은 모두 next()
유형으로 타성 계산의 서열을 나타낸다.집합 데이터 유형인
Iterator
,list
,dict
등은 str
이지만 Iterable
는 아니지만Iterator
함수를 통해 iter()
대상을 얻을 수 있다.파이톤의
Iterator
순환은 본질적으로 끊임없이 호출for
함수를 통해 이루어진다. 예를 들어 다음과 같다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.