Führt 'für x in Array' immer zu sortierten x? [Python / NumPy]

8

Für Arrays und Listen in Python und Numpy sind die folgenden Zeilen äquivalent:

%Vor%

und:

%Vor%

Ich bin an der Bestellung der Artikelliste interessiert. In einigen Beispielen, die ich ausprobiert habe, sind sie identisch, aber ist es garantiert ? Zum Beispiel weiß ich, dass die Anweisung foreach in C # keine Reihenfolge garantiert, und dass ich vorsichtig damit sein sollte.

    
Chris 06.08.2009, 02:31
quelle

3 Antworten

10

Es ist garantiert für Listen. Ich denke, das relevantere Python parallel zu Ihrem C # Beispiel wäre, über die Schlüssel in einem Wörterbuch zu iterieren, was NICHT garantiert ist, in irgendeiner Reihenfolge zu sein.

%Vor%

Die for <element> in <iterable> Struktur sorgt nur dafür, dass die iterable eine next() Funktion liefert, die etwas zurückgibt. Es gibt keine allgemeine Garantie, dass diese Elemente in beliebiger Reihenfolge über die Domäne der for..in -Anweisung zurückgegeben werden. Listen sind ein Sonderfall.

    
Triptych 06.08.2009, 03:17
quelle
10

Ja, es ist vollkommen garantiert. for item in myarray (wobei myarray eine Sequenz ist, die Arrays von numpy, eingebaute Listen, Pythons array.arrays, etc usw. enthält), ist in Python tatsächlich äquivalent zu:

%Vor%

für eine Phantomvariable _aux ;-). Übrigens, beide Konstrukte entsprechen auch

%Vor%     
Alex Martelli 06.08.2009 02:34
quelle
6

Ja, die Python-Sprachreferenz garantiert dies (Hervorhebung ist mein):

%Vor%
  

"Die Suite wird dann für jeden von der   Iterator, in der Reihenfolge aufsteigender Indizes . "

    
earl 06.08.2009 02:39
quelle

Tags und Links