鱼C论坛

 找回密码
 立即注册
查看: 1265|回复: 4

[已解决]如何求列表中数值的最大和第二大值?

[复制链接]
发表于 2017-9-8 08:36:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. li = [18,3,5,7,9,11,13]
  2. i = 0
  3. max1 = li[0]
  4. max2 = li[1]
  5. while i <len(li):
  6.         if max1 < li[i]:
  7.                 max2 = max1
  8.                 max1 = li[i]
  9.         else:
  10.                 if max2 < li[i]:
  11.                         max2 = li[i]
  12.         i += 1
  13. print 'max1',max1
  14. print 'max2' , max2
复制代码

自己写错了,求不出第二大值,求教要如何修改?
最佳答案
2017-9-8 10:26:27

  1. #方法一
  2. li = [18,3,5,7,9,11,13]

  3. lenght = len(li)
  4. i = 0

  5. while i < lenght:

  6.     j = i + 1
  7.     while j < lenght:
  8.         if li[i] < li[j]:
  9.             temp = li[i]
  10.             li[i] = li[j]
  11.             li[j] = temp

  12.         j += 1
  13.     i += 1
  14. print(li)
  15. print('max1',li[0])
  16. print('max2' , li[1])
复制代码
  1. #方法二 内置方法
  2. li = [18,3,5,7,9,11,13]
  3. li.sort()
  4. li.reverse()

  5. print(li)
  6. print('max1',li[0])
  7. print('max2' , li[1])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-9-8 09:02:36 | 显示全部楼层
你把i 的初始值设置为2就行了
#建议你可以把列表里的值排序,然后再求第一第二大的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 09:05:41 | 显示全部楼层
用sort函数先升序排序,取最后两个即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 10:26:27 | 显示全部楼层    本楼为最佳答案   

  1. #方法一
  2. li = [18,3,5,7,9,11,13]

  3. lenght = len(li)
  4. i = 0

  5. while i < lenght:

  6.     j = i + 1
  7.     while j < lenght:
  8.         if li[i] < li[j]:
  9.             temp = li[i]
  10.             li[i] = li[j]
  11.             li[j] = temp

  12.         j += 1
  13.     i += 1
  14. print(li)
  15. print('max1',li[0])
  16. print('max2' , li[1])
复制代码
  1. #方法二 内置方法
  2. li = [18,3,5,7,9,11,13]
  3. li.sort()
  4. li.reverse()

  5. print(li)
  6. print('max1',li[0])
  7. print('max2' , li[1])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-8 19:01:48 | 显示全部楼层
  1. li = [18,3,5,7,9,11,13]
  2. li.sort()
  3. print(li[-2])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 05:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表