Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #4647

Re: [Python-de] Wie sieht Python fuer mich aus?

From Mike Müller <mmueller@python-academy.de>
Newsgroups de.comp.lang.python
Subject Re: [Python-de] Wie sieht Python fuer mich aus?
Date 2017-01-10 00:17 +0100
Organization Python Academy GmbH & Co. KG
Message-ID <mailman.417.1484003879.2395.python-de@python.org> (permalink)
References <Python-20170108184230@ram.dialup.fu-berlin.de> <0a1a079d-99e2-f353-9334-ad2b20344449@sschwarzer.net> <44f41e4c-945c-c35e-7d1e-370199c7cf8a@python-academy.de>

Show all headers | View raw


Am 09.01.17 um 06:23 schrieb Stefan Schwarzer:

> 
>>   »range(2,7)« ergibt einen Bereich (einen Iterator) und
>>   »range(2)« bedeutet »range(0,2)«.
> 
> In Python 2 ergibt `range` eine Liste, in Python 3 einen
> Iterator.

Hier geht es etwas genauer. ;)

`range` in Python 3 gibt keinen Iterator sonder ein `range`-Objekt
zurück:

   >>> type(range(10))
   range

Wichtige Unterschiede:

* `range` unterstützt kein `next`:
  >>> next(range(10))
  TypeError: 'range' object is not an iterator

* `range`-Objekte lassen sich indizieren
  >>> r = range(10)
  >>> r[0]
  0
  Iteratoren nicht:
  >>> i = iter('abc')
  >>> i[0]
  TypeError: 'str_iterator' object is not subscriptable

* `range`-Objekte lassen sich immer wieder in Listen (oder
  andere Sequenzen) umwandeln:
  >>> r = range(10)
  >>> list(r)
  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  >>> list(r)
  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  Itertoren sind dagegen "einmalig":
  >>> i = iter('abc')
  >>> list(i)
  ['a', 'b', 'c']
  >>> list(i)
  []

Bei einer (typischen) Nutzung in einer `for`-Schleife:

   >>> for x in range(10):

gibt es allerdings keine Unterschiede.

Mike

Back to de.comp.lang.python | Previous | Next | Find similar


Thread

Re: [Python-de] Wie sieht Python fuer mich aus? Mike Müller <mmueller@python-academy.de> - 2017-01-10 00:17 +0100

csiph-web