2016-07-13 9 views
0

私はPython初心者ですが、いくつか質問があります。以下の例では、forループの外側のforループで、その出力形式を維持しながらxの出力を使用したいと考えています。ループ外のリストに追加しようとしましたが、追加された変数を出力すると、同じ形式では表示されません。forループとフォーマット外のPython forループ出力

質問1:ループの出力をループ外で同じ形式で使用するにはどうすればよいですか?

質問2:forループの出力を、フォーマットを維持しながらループ外の変数に割り当てるにはどうすればよいですか?

質問3:最終出力のユニークな色数をすばやくカウントする方法はありますか?たとえば、赤:2、青:2、緑:1、オレンジ:1、白:2、ブラック:1、紫:2、インディゴ: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) 

このようなルックスのためで出力:

このようなルックスを追加した後
['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()を呼び出すときは、実際には2つのリストを作成している

[['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

感謝。私は私が探していたものを正確に得られなかったが、私は自分の質問をうまく説明しなかったのでそうである可能性が高い。私はforループの出力をとり、別の関数の変数のようにforループの外の値に代入したいと考えています。私はそれを返すので、値を返します。リストの理解を行うと、フォーマットが失われ、リストとして表示されます。どのように私はそれを同じ形式を維持しながらforループの外の変数に割り当てることができますか? – MBasith

答えて

1

。それらをリストに保存するには、2番目のループが必要です。あなたの3番目の質問に関しては

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

の回答にコメントで示唆したように、私はcollections.counterを使用することをお勧めします:

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

Python Collections documentationから。

+0

実際には、この正確なもののための 'collections.Counter'があります。 –

+0

は、この問題のより良いデータ構造の選択肢を反映するように答えを更新しました。ありがとうございました! – Ares

0

最初に出力するのは、x行です。 2番目の出力は配列内のすべてのxを持ちます。そのため、カンマで区切って表示します。それらを同じ形式で印刷する場合は、my_listでforループを実行し、配列全体を印刷する代わりに各行でprintを呼び出さなければなりません。

ので、応答のための

for element in my_list: 
    print(element)