2016-06-05 8 views
1

Ich versuche, eine neue Liste von Indizes zu erstellen, indem ich eine vorherige Liste aufzählte. Grundsätzlich möchte ich:Liste aufzählen, um eine neue Liste von Indizes zu erstellen?

Um eine Liste von Elementen aufzuzählen, um Indizes für jedes Element zu erhalten. Ich codiert diese:

board = ["O","O","O","O","O"] 
for index,y in enumerate(board): 
    print(index,end=" ") 

die gibt:

0 1 2 3 4 

Ich möchte nun diese Zahlen in eine neue Liste machen, haben aber keine Ahnung, wie das zu tun.

Danke! Sorry für die Frage, ich bin immer noch ein Anfänger und versuche nur, den Dreh raus zu bekommen.

+0

Sie sollten sich nicht für die Frage entschuldigen. Während Sie die Lösung gefunden haben, indem Sie ein bisschen mehr gesucht haben, haben Sie eine gute Qualitätsfrage gestellt, die gut formatiert wurde. Viel Spaß beim Lernen von Python! – Nicarus

Antwort

1

Sie sollten wahrscheinlich nur eine Auswahl der richtigen Länge machen:

board = ["O","O","O","O","O"] 
indices = list(range(len(board))) 
print(indices) 
> [0, 1, 2, 3, 4] 
+0

Ahh, das ist viel einfacher. Aber wie könnte ich es so drucken, dass es als 0 1 2 3 4 erscheint, im Gegensatz zu [0,1,2,3,4]? – greatdonut

+0

'print ('' .join (Indizes))' https://docs.python.org/3.5/library/stdtypes.html#str.join – Nicarus

+0

Vielen Dank! Ich habe das versucht und leider einen Fehler bekommen, da die Elemente in der neuen Liste ganze Zahlen sind. Ich habe gerade Print ("" .join (str (i) für i in new) codiert und habe es dann auch bekommen, so dass es endlich funktioniert! – greatdonut

0

Wenn Sie nur alle Zahlen wollen Sie diese verwenden können:

indices = list(range(len(board))) 

Wenn Sie eine Nummer übergeben es an Reichweite gibt einen Iterator mit den Zahlen 0 bis zur übergebenen Zahl (ohne) zurück. Danach machen wir daraus eine Liste mit der Listenfunktion.

0

Sie Liste Verständnis verwenden können, das zu tun:

result = [index for index,y in enumerate(board)] 

Alternativ können Sie die range Funktion:

result = range(len(board)) 
0

Ich würde nur numpy arange verwenden, die ein Array erstellt, wie das aussieht ein Sie suchen: Numpy Arange

import numpy as np 

enumerated = np.arange(len(board)) 
+1

Ich würde denken, dass' numpy' oder irgendeine externe Bibliothek für dieses Problem übertrieben ist. Das OP ist ein Anfänger, vielleicht ist dies nicht der beste Ansatz zu dieser Zeit. – Nicarus

+0

Wahr, dass. Beginnen Sie mit den Grundlagen. – zauberfein

1

Verwenden Liste Verständnis:

indices = [index for index, y in enumerate(board)] 

Wenn board ist immer ein Objekt, das die __len__ -Methode implementiert, können Sie auch range verwenden:

indices = list(range(len(board))) 
0

Der einfachste Weg ist:

board = ["O","O","O","O","O"] 
newlist = [] 
for index,y in enumerate(board): 
    newlist.append(index) 

Ein fortgeschrittener Weg mit Listenergänzungen wäre:

newlist = [index for index, value in enumerate(board)]