2016-07-13 2 views
0

Ich bin ein Python-Neuling und ich habe ein paar Fragen. Im folgenden Beispiel möchte ich die Ausgabe von x in der for-Schleife außerhalb der for-Schleife verwenden, während das Format beibehalten wird. Ich habe versucht, sie an eine Liste außerhalb der Schleife anzuhängen, aber wenn ich die angehängte Variable drucke, wird sie nicht im selben Format angezeigt.Python für die Schleife Ausgabe außerhalb von For-Schleife und Format

Frage 1: Wie kann ich den Ausgang der Schleife außerhalb der Schleife im gleichen Format verwenden?

Frage 2: Wie kann ich die Ausgabe der for-Schleife einer Variablen außerhalb der Schleife zuweisen, während das Format beibehalten wird?

Frage 3: Gibt es eine schnelle Möglichkeit, die Anzahl der eindeutigen Farben in der endgültigen Ausgabe zu zählen? Zum Beispiel Rot: 2, Blau: 2, Grün: 1, Orange: 1, Weiß: 2, Schwarz: 1, Lila: 2, Indigo: 1

file = '''2016-07-12 08:00 Red  Blue Green 
      2016-07-12 08:00 Red  Orange White 
      2016-07-12 09:00 Blue Black Purple 
      2016-07-12 10:00 Indigo Purple White''' 

split_file = file.split('\n') 

my_list = [] 
for i in split_file: 
    x = (str(i).split()) 
    my_list.append(x) 
print(my_list) 

Der Ausgang in der für sieht wie folgt aus:

['2016-07-12', '08:00', 'Red', 'Blue', 'Green'] 
['2016-07-12', '08:00', 'Red', 'Orange', 'White'] 
['2016-07-12', '09:00', 'Blue', 'Black', 'Purple'] 
['2016-07-12', '10:00', 'Indigo', 'Purple', 'White'] 

Ausgabe nach wie folgt aussieht anhängt:

[['2016-07-12', '08:00', 'Red', 'Blue', 'Green'], ['2016-07-12', '08:00', 'Red', 'Orange', 'White'], ['2016-07-12', '09:00', 'Blue', 'Black', 'Purple'], ['2016-07-12', '10:00', 'Indigo', 'Purple', 'White']] 
+0

Danke für die Antworten. Ich habe nicht genau das bekommen, wonach ich gesucht habe, aber das ist wahrscheinlich, weil ich meine Frage nicht gut erklärt habe. Ich möchte die Ausgabe der for-Schleife nehmen und sie einem Wert außerhalb der for-Schleife wie eine Variable in einer anderen Funktion zuweisen. Wenn ich es tue, gibt es nur einen Wert zurück, weil ich es zurückgebe. Wenn ich das Verständnis lese, verliere ich die Formatierung und es erscheint als eine Liste. Wie kann ich es einer Variablen außerhalb der for-Schleife zuweisen, während das gleiche Format beibehalten wird? – MBasith

Antwort

1

Sie sind tatsächlich die Schaffung von zwei Listen, wenn Sie .split() nennen. Wenn Sie sie in der Liste speichern möchten, benötigen Sie eine zweite Schleife.

my_list = [] 
for i in split_file: 
    x = (str(i).split()) 
    for split in x: 
     my_list.append(split) 
print(my_list) 

Im Hinblick auf Ihre dritte Frage, würde ich collections.counter mit als in den Kommentaren zu der Antwort vorgeschlagen:

for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']: 
    cnt[word] += 1 
print cnt 

Vom Python Collections documentation.

+0

Es gibt tatsächlich 'collections.Counter', das ist für genau diese Sache. –

+0

aktualisiert die Antwort, um die bessere Datenstruktur für dieses Problem zu reflektieren. Ich wusste nichts davon, danke! – Ares

0

Der erste Ausgang, den Sie haben, ist das X Zeile für Zeile gedruckt. Die zweite Ausgabe hat alle x in einem Array, deshalb zeigen sie Komma-getrennt. Wenn Sie sie im selben Format drucken möchten, müssen Sie eine for-Schleife auf my_list ausführen und Print für jede Zeile aufrufen, anstatt das gesamte Array zu drucken.

So

for element in my_list: 
    print(element)