gpt4 book ai didi

python - python中的嵌套for循环不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:52:17 25 4
gpt4 key购买 nike

我们基本上有一个很大的 xcel 文件,我想做的是创建一个列表,其中包含每列的最大值和最小值。有 13 列,这就是 while 循环一旦达到 14 就应该停止的原因。问题是一旦计数器增加,它似乎不会遍历 for 循环一次。或者更明确地说,while 循环只经过 for 循环一次,但它似乎确实循环了,因为它将计数器增加 1 并在 14 处停止。应该注意的是,输入文件中的行是数字字符串,它是为什么我将它们转换为元组,然后检查给定位置的值是否大于 column_max 或小于 column_min。如果是这样,我重新分配 column_max 或 column_min。完成后,column_max 和 column_min 将附加到列表 ( l ) 和计数器 (位置) 增加以重复下一列。任何帮助将不胜感激。

input_file = open('names.csv','r')
l= []
column_max = 0
column_min = 0
counter = 0
while counter<14:
for row in input_file:
row = row.strip()
row = row.split(',')
row = tuple(row)
if (float(row[counter]))>column_max:
column_max = float(row[counter])
elif (float(row[counter]))<column_min:
column_min = float(row[counter])
else:
column_min=column_min
column_max = column_max
l.append((column_max,column_min))
counter = counter + 1

最佳答案

我认为您想切换 forwhile 循环的顺序。

请注意,有一个稍微更好的方法来做到这一点:

with open('yourfile') as infile:
#read first row. Set column min and max to values in first row
data = [float(x) for x in infile.readline().split(',')]
column_maxs = data[:]
column_mins = data[:]
#read subsequent rows getting new min/max
for line in infile:
data = [float(x) for x in line.split(',')]
for i,d in enumerate(data):
column_maxs[i] = max(d,column_maxs[i])
column_mins[i] = min(d,column_mins[i])

如果您有足够的内存来一次将文件保存在内存中,这将变得更加容易:

with open('yourfile') as infile:
data = [map(float,line.split(',')) for line in infile]
data_transpose = zip(*data)
col_mins = [min(x) for x in data_transpose]
col_maxs = [max(x) for x in data_transpose]

关于python - python中的嵌套for循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com