2017-03-09 7 views
0

私は以前の回答を尊重して、私の質問を完全に変更するつもりです。私は以下のようにタプルのリストを生成しています。Pythonの "forループ"反復中に取得された "タプルのリスト"に従ってcsvファイルに複数の列を書き込む方法

for i in range(5): 

TotalDistance = 0 # particle i starts moving from 0 
TotalTime = 0 # particle i starts moving at time 0 
driftpoints =[(0,0)] 
while TotalDistance < 5.0: 
    time = random.uniform(0,1) # paritcle takes time to move to next position 
    distance = random.uniform(0,1) # particle moves by distance. 
    TotalTime = TotalTime + time 
    TotalDistance = TotalDistance + distance 
    position = (TotalTime, TotalDistance) 
    driftpoints.append(position) 

最初の繰り返しのリストの例を以下に示します。

[(0, 0), (0.21724544874575513, 0.754467286127031), (0.25007307998158623, 1.118356895500405), (0.7047856454945854, 1.4755146942363875), (1.3710776008226833, 2.16401542582095), (1.9942383846177156, 2.9751487045440026), (2.707031044871571, 3.9578284975759295), (3.3278895170648877, 4.831285527860187), (4.000180863917544, 5.218308572399064)] 

単一のリストの場合は、次の形式でCSVファイルに保存できます。

Time,    Position, 
0,     0, 
0.21724544874575513, 0.754467286127031, 
0.25007307998158623, 1.118356895500405, 
0.7047856454945854, 1.4755146942363875, 
1.3710776008226833, 2.16401542582095, 
1.9942383846177156, 2.9751487045440026, 
2.707031044871571, 3.9578284975759295, 
3.3278895170648877, 4.831285527860187, 
4.000180863917544, 5.218308572399064 

しかし、私にはさらに多くの反復があります。私が直面している問題は、次の粒子のための列を追加することです。 1つのcsvファイルに各パーティクルの5列の列を保存するにはどうすればよいですか?カラムとカラムの長さは、乱数を時間と距離として扱うために大きく異なる可能性があることに注意してください。

このような疑問が既に解決されている場合は、私を許して解決策にリダイレクトしてください。

答えて

0

さて、最初の質問以外は私の質問には回答がありませんでしたが、私の質問を編集して回答が削除されました。

いずれにしても、私は次のようにしました。

transposed = [] 
__________________ 
[for i in range(5):] 
[ all    ] 
[  my   ] 
[  previous ] 
[____________code__] 


    transposed=transposed+zip(*driftpoints) 
FinalFile=list(itertools.izip_longest(*transposed)) 

最初の行私の以前のコードでは、各反復で作成したリストを転置し、最後のコードは、その後、作成したリストを再転置

transposed = [(0, t1, t2,...t5),(0, x1, x2,...x5), ... (0, t1, t2,...t8),(0,x1, x2,...x8)] 

のように見えるタプルの長いリストを作成するために追加した後、各反復は次の列の集合に現れる。 zip(*転置)とは異なり、列の最短長さに限定されません。

最後に、

with open('file.csv','wb') as out: 
    csv_out=csv.writer(out) 
    for row in Finalfile: 
     csv_out.writerow(row) 
としてCSVファイルにFinalFileを書きます
関連する問題