如何返回列表中不同元素之间的最大值?

2024-04-30 01:01:42 发布

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

STOCKDATA_LIST_01=[
"2019,06,03,49.88,50.33,49.78,50.22,48.54,729600",
"2019,06,04,50.31,50.50,50.17,50.37,48.68,888800",
"2019,06,05,50.45,51.11,50.45,50.71,49.01,1144700",
"2019,06,06,50.89,51.22,50.85,50.98,49.27,913200",
"2019,06,07,50.65,50.77,49.98,50.07,48.93,881800",
"2019,06,10,49.96,50.15,49.71,50.13,48.99,643200",
"2019,06,11,50.21,50.26,49.92,50.02,48.88,1006000",
"2019,06,12,50.02,50.33,49.88,50.15,49.01,696700",
"2019,06,13,50.24,50.50,48.66,48.79,47.68,1993300",
"2019,06,14,48.74,48.76,48.05,48.60,47.50,2125800",
"2019,06,17,48.64,48.64,47.77,48.14,47.05,1751600",
"2019,06,18,48.24,48.92,48.24,48.67,47.56,1879200",
"2019,06,19,48.68,48.86,48.66,48.77,47.66,824100",
"2019,06,20,48.77,48.77,48.18,48.50,47.40,902600",
"2019,06,21,48.43,48.56,48.25,48.27,47.17,2825600",
"2019,06,24,48.36,48.67,48.27,48.40,47.30,650100",
"2019,06,25,48.29,48.54,48.15,48.31,47.21,963700",
"2019,06,26,48.30,48.50,47.99,48.13,47.04,750600",
"2019,06,27,48.02,48.52,47.96,48.34,47.24,1022000",
"2019,06,28,48.30,48.61,48.15,48.41,47.31,979700"]

这是一个完整月份的股票信息长列表,格式为(年、月、日、股价1、股价2、股价3、股价4、股价5、购买的股票总数)

我想知道如何让它返回51.22的值,当查看一个月内每天的股价时,它是列表中最大的值

所以我需要弄清楚如何搜索每一行上的每一个股票价格,并从中找出最大的价值。结果是51.22有人能帮助使用下面的函数吗

def compute_month_stats(data):
    for line in STOCKDATA_LIST_01:
        line.split(',')

Tags: 函数信息列表def格式linelist股票
3条回答

你可以在一次传球中做到这一点,但为了清楚起见,我将其分解

#separate list by ,
splitchar = [i.split(',') for i in STOCKDATA_LIST_01]

#get the array to show only stocks
pricesonly = [i[3:-1] for i in splitchar]

#find the max value of each row
maxvalbyrow = [max(i) for i in pricesonly]


print(pricesonly)
#trucated output
#[['49.88', '50.33', '49.78', '50.22', '48.54'], 
# ['50.31', '50.50', '50.17', '50.37', '48.68']]

print('\n', maxvalbyrow)
#trucated output
#['50.33', '50.50', '51.11', '51.22', '50.77',
# '50.15', '50.26', '50.33', '50.50', '48.76',
# '48.64', '48.92', '48.86', '48.77', '48.56', 
# '48.67', '48.54', '48.50', '48.52', '48.61']

对于列表中的最大值,只需取列表中的最大值即可

print(max(maxvalbyrow))
#51.22

一行

maxval = max([max(i.split(',')[3:-1]) for i in STOCKDATA_LIST_01])
print(maxval)
#51.22

您可以使用for循环:

stock_values = []

for l in  STOCKDATA_LIST_01:
    stock_values += map(float, l.split(',')[3:-1])

print(max(stock_values))

输出:

51.22

如果您喜欢单行代码:

max(map(float, (e for l in STOCKDATA_LIST_01 for e in l.split(',')[3:-1])))

输出:

51.22

print(max([max(map(float, r.split(',')[3:7])) for r in STOCKDATA_LIST_01]))

相关问题 更多 >