首页 > 解决方案 > 为什么在这个答案中使用 set()

问题描述

根据参加者的大学运动会成绩单,您需要找到亚军成绩。给你分数。将它们存储在一个列表中,然后找到亚军的分数。我找到了以下解决方案。我想知道为什么在这里使用 set() 。

 n = int(input())
 nums = map(int, input().split())    
 print(sorted(list(set(nums)))[-2])

标签: pythonset

解决方案


简而言之:它删除了重复值

集合是最多包含一个值的集合。因此,您可以 - 鉴于元素是可散列的 - 将其用作唯一性过滤器,例如:

>>> set([1,4,1,2,5,2])
{1, 2, 4, 5}

因此,尽管原始列表包含多次,但在集合中,这些仅存储一次12

因此,在这里我们可以使用它来获得忽略重复项的第二大值。

但是,我不知道这是否满足“问题陈述”。因为“获胜者”和“亚军”可能有相同的分数。因此,它取决于问题规范的“细节”。


推荐阅读