Python 如何在.txt文件中找到最大值?
我发这个是因为我被一个代码绊住了,我花了一整天的时间试图得到它 这是一个python程序,它读取一个包含大量浮点值(1亿+)的.txt文件,并从中获取最高值和最低值 我遇到了很多问题,第一个问题是我无法将字符串转换为浮点值来比较值 新代码不显示值 一些细节:Python 如何在.txt文件中找到最大值?,python,file,Python,File,我发这个是因为我被一个代码绊住了,我花了一整天的时间试图得到它 这是一个python程序,它读取一个包含大量浮点值(1亿+)的.txt文件,并从中获取最高值和最低值 我遇到了很多问题,第一个问题是我无法将字符串转换为浮点值来比较值 新代码不显示值 一些细节: 这些行有多个值,我尝试使用split来获取它们 所有的数字都是浮点数 代码如下: with open('gmm_data.txt') as f: array = [] minim = 99999999999999
- 这些行有多个值,我尝试使用split来获取它们
- 所有的数字都是浮点数
with open('gmm_data.txt') as f:
array = []
minim = 99999999999999
maxim = -99999999999999
for line in f: # read rest of lines
array.append([float(x) for x in line.split()])
if(array[0] > maxim):
maxim = array[0]
elif(array[0] < minim):
minim = array[0]
print (maxim)
print (minim)
以open('gmm_data.txt')作为f的:
数组=[]
最小值=9999999999
最大值=-9999999999
对于f中的行:#读取其余行
array.append([float(x)表示x在line.split()中)
如果(数组[0]>最大值):
最大值=数组[0]
elif(数组[0]<最小值):
最小值=数组[0]
打印(maxim)
打印(最小)
在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值添加的地方;这是在Python中通过数组[-1]实现的)。
在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值被append
ed的地方;这是用array[-1]
在Python中实现的,看起来在比较步骤中,您希望访问数组的最后一个元素(因为这是新值被append
ed的地方;这是用array[-1]在Python中实现的。)
在比较步骤中,您似乎希望访问数组的最后一个元素(因为这是新值的append
ed;这是在Python中通过array[-1]实现的)
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值
相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换
要进行初始化,您可以将最大值初始化为浮点('-inf')
-
with open('gmm_data.txt') as f:
maxf = float('-inf')
minf = float('inf')
for line in f: # read rest of lines
if line.strip():
arr = [float(x) for x in line.split()])
maxa = max(arr)
mina = min(arr)
if maxa > maxf:
maxf = maxa
if mina < minf:
minf = mina
以open('gmm_data.txt')作为f的:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值
相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换
要进行初始化,您可以将最大值初始化为浮点('-inf')
-
with open('gmm_data.txt') as f:
maxf = float('-inf')
minf = float('inf')
for line in f: # read rest of lines
if line.strip():
arr = [float(x) for x in line.split()])
maxa = max(arr)
mina = min(arr)
if maxa > maxf:
maxf = maxa
if mina < minf:
minf = mina
以open('gmm_data.txt')作为f的:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值
相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换
要进行初始化,您可以将最大值初始化为浮点('-inf')
-
with open('gmm_data.txt') as f:
maxf = float('-inf')
minf = float('inf')
for line in f: # read rest of lines
if line.strip():
arr = [float(x) for x in line.split()])
maxa = max(arr)
mina = min(arr)
if maxa > maxf:
maxf = maxa
if mina < minf:
minf = mina
以open('gmm_data.txt')作为f的:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
您说您的文件中有超过百万个浮点值,如果是这样,您不应该将整个文件读入内存并将其存储为浮点值
相反,您应该读取每一行,将一行中的所有值转换为float,然后尝试从中查找最大值/最小值,然后在文件中存储一个表示最大值和最小值元素的变量,并检查每一行的最大值和最小值是否大于/小于这些值,并相应地进行替换
要进行初始化,您可以将最大值初始化为浮点('-inf')
-
with open('gmm_data.txt') as f:
maxf = float('-inf')
minf = float('inf')
for line in f: # read rest of lines
if line.strip():
arr = [float(x) for x in line.split()])
maxa = max(arr)
mina = min(arr)
if maxa > maxf:
maxf = maxa
if mina < minf:
minf = mina
以open('gmm_data.txt')作为f的:
maxf=浮点('-inf')
minf=float('inf')
对于f中的行:#读取其余行
如果line.strip():
arr=[x行中x的浮点(x)]
最大值=最大值(arr)
最小值=最小值(arr)
如果maxa>maxf:
maxf=maxa
如果mina
这里有一个很好的清洁方法:
def min_and_max(iterable):
iterator = iter(iterable)
# Assumes at least two items in iterator
minim, maxim = sorted((next(iterator), next(iterator)))
for item in iterator:
if item < minim:
minim = item
elif item > maxim:
maxim = item
return (minim, maxim)
with open('gmm_data.txt', 'r') as f:
values = (float(value_str) for line in f for value_str in line.split())
minim, maxim = min_and_max(values)
print(maxim)
print(minim)
def最小值和最大值(iterable):
迭代器=iter(iterable)
#假设迭代器中至少有两个项
最小值,最大值=排序((下一个(迭代器),下一个(i