首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python列表中找到第二大数字

在Python列表中找到第二大数字
EN

Stack Overflow用户
提问于 2019-06-09 13:12:45
回答 2查看 160关注 0票数 0

我试图在列表中找到第二大数字,并考虑将列表转换为set,并将其转换回list,以消除重复的值。不幸的是,负值取了集合的最后一个索引(在这里,我期望最大的值占据集合中的最后一个索引)。List包含负值和正值。将其转换为set时,负值取最后一个索引。

代码语言:javascript
复制
n = 5
arr = [57, 57, 57, -57, 57]

res = list(set(arr))
print(res[-2])

我希望这是我的输出:

代码语言:javascript
复制
-57

但我得到的是:

代码语言:javascript
复制
57

怎样才能在列表中找到第二大数字?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-09 13:19:10

集合具有任意排序。您不能依赖于任何特定的排序(它根本不是语言规范的一部分,因此它可以从一个版本更改到另一个版本,甚至可以在理论上和实践中运行字符串)。

要么对list排序,要么使用heapq.nlargest查找第二大数字。在这两种情况下,set只对去重复有用,您需要将其转换回list以获得有用的排序。

票数 0
EN

Stack Overflow用户

发布于 2019-06-09 13:53:20

这里

代码语言:javascript
复制
arr = [57, 57, 57, -57, 57]

# If you want to avoid duplicates:
second_largest  = sorted(list(set(arr)))[-2]


# If you dont care about duplicates:
second_largest = sorted(arr)[-2]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56514869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档