首页 > 解决方案 > 使用 Python 从列表中获取最大值

问题描述

我有一个数据文件,我只需要第三列中包含的最大值。我写了以下代码:

def testing():
file_reading = open("source_file.txt", "r", encoding="utf-8") 
file_steps_yearly_sum = 0
file_steps_daily_list = []
while (True):
    row = file_reading.readline() 
    if len(row) == 0: 
        break
    else:
        steps = row.split(';')[2]
        file_steps_yearly_sum = int(file_steps_yearly_sum) + int(steps)
        #file_steps_list.append(row.split(';')[2])
        file_steps_daily_list.append(steps)
print(max(file_steps_daily_list))
print(file_steps_yearly_sum)
file_reading.close()
return file_steps_daily_list, file_steps_yearly_sum

计算的总和是正确的(用excel检查过),但是max方法给了我9928,这显然是错误的。只需查看输入文件,我就可以看到超过 10 000 个的值。没看懂,应该是单排

可以肯定的是,对循环做了同样的事情:

def max_num_in_list(file_steps_daily_list):
max = file_steps_daily_list[ 0 ]
for steps in file_steps_daily_list:
    if steps > max:
        max = steps
return max

再次,9928。我从源文件的第 3 列中提取的列表是:

['3766','12049','14624','12244','12353','12883','11079','10382','11491','14863','8607','15768',' 9308'、'10369'、'11240'、'12316'、'14224'、'10806'、'9511'、'7680'、'12966'、'11112'、'14996'、'15939'、'11097' , '5904', '15145', '9319', '15927', '11093', '8978', '9777', '10945', '9928', '12438', '10862', '12461', ' 11435'、'15788'、'10483'、'5110'、'15148'、'12534'、'12806'、'14360'、'10890'、'11102'、'6314'、'10931'、'12354' , '6986', '14972'、'13312'、'10307'、'9032'、'10941'、'8279'、'10040'、'14651'、'8613'、'7798'、'13348'、'10173'、'15510' , '15158', '13350', '10725', '8819', '17705', '12188', '10588', '9329', '9855', '8263', '8568', '7943', ' 20916'、'15909'、'23344'、'14633'、'31589'、'17501'、'15623'、'27245'、'14883'、'13990'、'11854'、'12016'、'4131' , '5286', '6542', '6165', '9261', '11257', '11418', '5848', '6240', '4718', '10072', '7737', '6313', ' 13311', '14479','6472'、'6411'、'7662'、'8918'、'13317'、'17446'、'5920'、'7435'、'9381'、'12857'、'7828'、'8645'、'12074 ','12183','8771','4522','5575','8379','8759','8803','7046','12604','10126','11097','8137', '6297'、'10037'、'5261'、'5498'、'10552'、'4577'、'8059'、'5404'、'4995'、'8932'、'6457'、'10056'、'9578 ','11464','11847','5212','13996','11114','8130','10293','9456','12363','8990','11352','5656', '15293', '5777', '8666'、'8810'、'8257'、'6530'、'10545'、'8240'、'10257'、'8968'、'10885'、'14032'、'14824'、'14065'、'9459' , '11654', '13685', '20181', '11789', '15220', '17844', '17542', '9152', '11382', '9120', '10311', '14250', ' 19197'、'22475'、'12806'、'13575'、'7773'、'4581'、'14411'、'10262'、'25511'、'17731'、'10729'、'16751'、'13167' , '14036', '12650', '11697', '12388', '14691', '18434', '5770', '9392', '9802', '10770', '10666', '10270', ' 12637', '16612'、'10226'、'9296'、'6447'、'10558'、'8255'、'11657'、'10749'、'10691'、'10692'、'10202'、'10129'、'6985' , '8428', '13951', '10186', '7663', '10325', '8022', '6410', '13082', '8145', '8342', '6718', '7665', ' 4771'、'10337'、'11529'、'10757'、'10578'、'8330'、'10803'、'10465'、'4351'、'10575'、'18682'、'10668'、'7541' , '10318', '11217', '6072', '14779', '14593', '10970', '9538', '11130', '16437', '4732', '10523', '9428', ' 4023','8045','9397'、'12765'、'8888'、'11324'、'10952'、'8924'、'10643'、'11467'、'15881'、'11923'、'13584'、'13399'、'11940 ','10092','7739','9582','11673','8454','11401','10040','11706','10589','7475','9097','14294', '14672'、'10227'、'7452'、'11680'、'14223'、'15035'、'11698'、'15239'、'8878'、'9530'、'11068'、'6766'、'10737 ','10805','13559','9126','10331','8525','4224','5898','7549','14848','11776','13216','8420', '6104', '6193'、'7448'、'8403'、'7286'、'11457'、'11537'、'4463'、'6693'、'3723'、'12183'、'10768'、'18342'、'13224' , '10874', '7713', '12385', '14665', '10184', '10272', '11718', '12757', '11296', '18269', '11295', '10987', ' 11690'、'5036'、'7402'、'8013'、'12001'、'8734'、'12941'、'10298'、'11536'、'10947'、'14931'、'18185'、'9139' ]7713'、'12385'、'14665'、'10184'、'10272'、'11718'、'12757'、'11296'、'18269'、'11295'、'10987'、'11690'、'5036' , '7402', '8013', '12001', '8734', '12941', '10298', '11536', '10947', '14931', '18185', '9139']7713'、'12385'、'14665'、'10184'、'10272'、'11718'、'12757'、'11296'、'18269'、'11295'、'10987'、'11690'、'5036' , '7402', '8013', '12001', '8734', '12941', '10298', '11536', '10947', '14931', '18185', '9139']

显然,9928 并不是最大值。到底是怎么回事?为什么 max() 不会给我最大值?

标签: pythonmax

解决方案


尝试这个:

a = ['3766', '12049', '14624', '12244', '12353', '12883', '11079', '10382', '11491', '14863', '8607', '15768', '9308', '10369', '11240', '12316', '14224', '10806', '9511', '7680', '12966', '11112', '14996', '15939', '11097', '5904', '15145', '9319', '15927', '11093', '8978', '9777', '10945', '9928', '12438', '10862', '12461', '11435', '15788', '10483', '5110', '15148', '12534', '12806', '14360', '10890', '11102', '6314', '10931', '12354', '6986', '14972', '13312', '10307', '9032', '10941', '8279', '10040', '14651', '8613', '7798', '13348', '10173', '15510', '15158', '13350', '10725', '8819', '17705', '12188', '10588', '9329', '9855', '8263', '8568', '7943', '20916', '15909', '23344', '14633', '31589', '17501', '15623', '27245', '14883', '13990', '11854', '12016', '4131', '5286', '6542', '6165', '9261', '11257', '11418', '5848', '6240', '4718', '10072', '7737', '6313', '13311', '14479', '6472', '6411', '7662', '8918', '13317', '17446', '5920', '7435', '9381', '12857', '7828', '8645', '12074', '12183', '8771', '4522', '5575', '8379', '8759', '8803', '7046', '12604', '10126', '11097', '8137', '6297', '10037', '5261', '5498', '10552', '4577', '8059', '5404', '4995', '8932', '6457', '10056', '9578', '11464', '11847', '5212', '13996', '11114', '8130', '10293', '9456', '12363', '8990', '11352', '5656', '15293', '5777', '8666', '8810', '8257', '6530', '10545', '8240', '10257', '8968', '10885', '14032', '14824', '14065', '9459', '11654', '13685', '20181', '11789', '15220', '17844', '17542', '9152', '11382', '9120', '10311', '14250', '19197', '22475', '12806', '13575', '7773', '4581', '14411', '10262', '25511', '17731', '10729', '16751', '13167', '14036', '12650', '11697', '12388', '14691', '18434', '5770', '9392', '9802', '10770', '10666', '10270', '12637', '16612', '10226', '9296', '6447', '10558', '8255', '11657', '10749', '10691', '10692', '10202', '10129', '6985', '8428', '13951', '10186', '7663', '10325', '8022', '6410', '13082', '8145', '8342', '6718', '7665', '4771', '10337', '11529', '10757', '10578', '8330', '10803', '10465', '4351', '10575', '18682', '10668', '7541', '10318', '11217', '6072', '14779', '14593', '10970', '9538', '11130', '16437', '4732', '10523', '9428', '4023', '8045', '9397', '12765', '8888', '11324', '10952', '8924', '10643', '11467', '15881', '11923', '13584', '13399', '11940', '10092', '7739', '9582', '11673', '8454', '11401', '10040', '11706', '10589', '7475', '9097', '14294', '14672', '10227', '7452', '11680', '14223', '15035', '11698', '15239', '8878', '9530', '11068', '6766', '10737', '10805', '13559', '9126', '10331', '8525', '4224', '5898', '7549', '14848', '11776', '13216', '8420', '6104', '6193', '7448', '8403', '7286', '11457', '11537', '4463', '6693', '3723', '12183', '10768', '18342', '13224', '10874', '7713', '12385', '14665', '10184', '10272', '11718', '12757', '11296', '18269', '11295', '10987', '11690', '5036', '7402', '8013', '12001', '8734', '12941', '10298', '11536', '10947', '14931', '18185', '9139']

int_list = list(map(int,a))

print(max(int_list)) #31589

推荐阅读