【发布时间】:2018-07-01 06:58:46
【问题描述】:
我的函数中有一个循环,它应该找到最大速率、最小速率并计算平均值,而我编写的函数这样做是正确的,但是当我找到我的数据中的最大值和最小值?我是python的初学者,但这是我拥有的循环。
max_rate = -1
min_rate = 25
count = 0
sum = 0
with open(file_names, "r") as file_out:
# skips the headers in the file
next(file_out)
for line in file_out:
values = line.split(",")
# since rate is index 6 that is what we are going to compare to values above
if float(values[6]) > max_rate:
max_rate = float(values[6])
if float(values[6]) < min_rate:
min_rate = float(values[6])
count += 1
# sum up all rates in the rates column
sum = float(values[6]) + sum
avg_rate = sum / count
print(avg_rate)
我打印了平均值只是为了测试我的功能。希望我问的问题是有道理的,我不只是想要第 6 个索引,而是想要具有最小值或最大值的其余行信息。一个示例是获取公司名称、州、邮编和费率。不要担心缩进,我不知道我是否在此处的代码块中将其格式化,但所有缩进都在我的代码块中。
【问题讨论】:
-
将
max和min与key函数一起使用。max(lines, key=lambda x: x[6]) -
for i, line in enumerate(file_out):为您提供行号和行内容。然后您可以更新line_max和line_min计数器以及您的费率。顺便说一句,如果您的数据集中的最大值/最小值不止一次,那么输出应该是什么? -
非常感谢,对于您的回复,我还有一个后续问题,说我不想要所有行信息,但仍然想要该行中的一些片段,这仍然有效吗,或者我应该以不同的方式去做吗?
-
为了回答你的问题,输出应该取它遇到的第一个最大值或第一个最小值(如果重复最大值或最小值)。
-
枚举方法的优点是,在循环结束时,您的计数为
i + 1。但是你当然也可以运行一个单独的变量,比如count。你的代码。
标签: python arrays list for-loop indexing