如何根据python中“for loop”迭代期间获得的“元组列表”在csv文件中写入多列

2024-03-29 09:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

鉴于前面的回答,我将完全改变我的问题。我正在生成元组列表,如下所示。你知道吗

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

但我还有更多的迭代。我面临的问题是为下一个粒子添加列。如何在单个csv文件中为每个粒子保存5对列?请记住,由于时间和距离是随机数,因此列的长度可能会有很大差异。你知道吗

如果这个问题或类似的问题已经得到回答,请原谅我并重新引导我到解决方案。你知道吗


Tags: 文件csvto列表timepositionrandomuniform
1条回答
网友
1楼 · 发布于 2024-03-29 09:39:16

好的,我没有得到任何关于我的问题的回复,除了第一个,我编辑了我的问题,然后回复被删除了。你知道吗

不管怎样,我都是这样做的。你知道吗

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(*转置)不同,它不限于列的最短长度。你知道吗

最后,将FinalFile写入csv文件

with open('file.csv','wb') as out:
    csv_out=csv.writer(out)
    for row in Finalfile:
        csv_out.writerow(row)

相关问题 更多 >