Iterables vs. Iteratoren leicht gemacht

Ich wette, Sie kämpfen ständig mit der Verwirrung in Bezug auf Iterables und Iteratoren. Fast jeder einzelne Schüler, den ich ausgebildet habe, tut dies. Die Ähnlichkeit der Benennung hilft nicht, und die meisten Beispiele, die Sie sehen, veranschaulichen die Konzepte nicht wirklich klar. Mal sehen, ob wir sie hier erklären können. Aber so, dass die Verständigung anhält.
Beginnen wir mit Iterables. Iterables sind Variablen, die auf der rechten Seite einer for-Schleife erscheinen. Also in diesem Fall

for name in names:

das iterable ist? Ja, Namen!

Stellen Sie es sich so vor, um ein erstes Verständnis zu erlangen. Ein Iterable macht an und für sich nichts Besonderes. Es kann iteriert werden, daher ist es iterierbar. Beispiele sind Strings, Listen, Tupel und sogar Dateien. Und noch mehr. Sie alle können iteriert werden.

In der realen Welt kann eine Ente fliegen. Wir könnten sagen, die Ente ist „flugfähig“ (hat die Fähigkeit zu fliegen). Aber das bedeutet nicht, dass die Ente jetzt fliegt oder jemals fliegen wollen wird. Es kann damit zufrieden sein, sein Leben mit Schwimmen und Gehen zu verbringen. Es muss jetzt einfach nicht flugfähig sein, obwohl es kann, wenn es will.
Und das gilt für iterables true. Sie können als Iterator verwendet werden, müssen es aber vielleicht nicht. Sie können sie also einfach auf der rechten Seite von for-Schleifen als Iterables verwenden, und das war’s.

Also, was ist ein Iterator und warum brauchen wir einen?
Nun, erstens, wie die Ente die Fähigkeit haben muss zu fliegen, bevor sie in die Luft geht, so haben nur Iterables die Fähigkeit, Iteratoren zu sein.
Wir könnten sagen, dass die Ente faul ist, weil sie sich nicht so anstrengen will, um zu fliegen. Und Itertoren sind auch faul, aber auf eine wirklich nützliche Weise. Dies liegt daran, dass ein Iterator nur einen Wert als Zeit zurückgibt und nur, wenn er dazu aufgefordert wird (durch Verwendung von __next__()).
Schauen wir uns nun etwas Code an, beginnend mit einem Iterable:

an_iterable = ['a', 'b', 'c']
for letter in an_iterable:
    print(letter)
    
a
b
c

Versuchen Sie, diese Beispiele einzugeben, und sehen Sie.
Schauen wir uns nun ein Iterable an:

an_iterator = iter(an_iterable)
an_iterator.__next__()
'a'
an_iterator.__next__()
'b'

Sehen Sie, wie faul der Iterator ist? Es muss gesagt werden, dass es alles tun soll! Aber das kann eine sehr gute Sache sein (aber das würde den Rahmen dieses Artikels sprengen).
Hoffentlich haben Sie jetzt, nachdem Sie dies gelesen haben, zwei Dinge erreicht:

  1. Sie kennen die Unterschiede zwischen Iterable und Iterator genau, und sie sind im Gedächtnis verankert.
  2. Sie können dieses Wissen nutzen, um viele andere Artikel zu lesen, die erklären, wie Sie diese wichtigen Konzepte verwenden.
    Lassen Sie mich wissen, ob dies sinnvoll ist und wenn Sie Fragen haben! Und hilft es?

Similar Posts

Leave a Reply

Your email address will not be published.