如何访问平面列表并在python中的第二个值上执行数学函数

问题描述 投票:0回答:2

这是学校的作业。我有一个文本文件,其中包含以下缩写列表,每个条目都位于一行中。第一个条目是日期,第二个条目是该点值之后的第二个条目,它是股市收盘价,该文件中大约有365个条目。

8/28/2018|26064.01953
8/29/2018|26124.57031
8/30/2018|25986.91992

使用以下代码,我将数据分为日期和值分开的列表列表。

import os
import math
import statistics
def main ():
    infile = open('DJI.txt', 'r')
    values = infile.read()
    infile.close()
    values=values.split("\n")
    values=[value.split("|") for value in values]
    print(values)
    avg = sum([float(l[1]) for l in values])/len(values)
main()  

这将提供以下输出

[['8/28/2018', '26064.01953'], ['8/29/2018', '26124.57031'], ['8/30/2018', '25986.91992'],

[Avg行给出以下错误:IndexError:列表索引超出范围,但是当我将1切换为0时,它给出了另一个错误,该错误表明无法在2018年8月28日将字符串转换为浮点数

我的任务是创建一个程序,全年的平均收盘价。每月平均收盘价最高收盘价和发生日期。最低收盘价和发生日期。将价格从最低到最高排序,并将排序后的列表写入名为DJI_Sorted的新文本文件中。

我在如何访问列表列表中的第二个值以执行文件统计时遇到麻烦。我也不确定如何编写将列表从最低到最高以及每个月的平均收盘时间而不是整个文件进行排序的代码。

非常感谢您的帮助。

python python-3.x list
2个回答
1
投票

结尾处可能会有一个空行。修改线计算平均值至此

avg = sum([float(x[1]) for x in values if len(x) > 1])/len(values)

0
投票
def main():
    infile = open('DJI.txt', 'r')
    values = infile.read()
    infile.close()
    values = values.split("\n")
    values = [value.split("|") for value in values if len(value.split("|")) > 1]
    print(values)
    avg = sum([float(l[1]) for l in values]) / len(values)
    print("-------avg--------", avg)
main()
© www.soinside.com 2019 - 2024. All rights reserved.