PythonのIteratorとIterableの違いについて詳しく説明します。
Pythonの中でlist、truple、str、dictはこれらはすべて反復されることができて、しかし彼らは決してローズマリーではありません。なぜですか?
ディケンサとは大きな違いがあるので、リスト/truple/map/dictのデータの大きさは決まっています。つまり、どれぐらいのことがありますか?しかし、シーズマリーは何回実行するか分かりませんので、どれぐらいの要素があるか分かりません。nextを呼び出すたびに、次のステップに進みます。惰性です。
反復可能かどうかを判断し、Iterableを使う。
for循環できるのはすべてIterableです。
next()ができるのはすべてIteratorです。
リスト、truple、dict、strのような集合データタイプは、ItrableではなくIteratorですが、iter()関数でIteratorオブジェクトを得ることができます。
Pythonのforサイクルはnextで実現されます。
ディケンサとは大きな違いがあるので、リスト/truple/map/dictのデータの大きさは決まっています。つまり、どれぐらいのことがありますか?しかし、シーズマリーは何回実行するか分かりませんので、どれぐらいの要素があるか分かりません。nextを呼び出すたびに、次のステップに進みます。惰性です。
反復可能かどうかを判断し、Iterableを使う。
from collections import Iterable
isinstance({}, Iterable) --> True
isinstance((), Iterable) --> True
isinstance(100, Iterable) --> False
重機かどうかを判断して、Iteratorを使います。
from collections import Iterator
isinstance({}, Iterator) --> False
isinstance((), Iterator) --> False
isinstance( (x for x in range(10)), Iterator) --> True
だから、for循環できるのはすべてIterableです。
next()ができるのはすべてIteratorです。
リスト、truple、dict、strのような集合データタイプは、ItrableではなくIteratorですが、iter()関数でIteratorオブジェクトを得ることができます。
Pythonの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
以上のPythonの中でIteratorとIterableの違いについて詳しく説明します。つまり、小編が皆さんに共有している内容の全部です。参考にしてもらいたいです。どうぞよろしくお願いします。