对于循环python,找到第二个最小的数字

时间:2014-11-07 13:39:01

标签: python for-loop

我创建了这段代码,用户输入一个整数字符串。我正在尝试编写一个循环来查找de list中的第二个最小数字。我该如何完成?

numbers_input = raw_input('Insert numbers seperated by a space')
numbers_strings = numbers_input.split() 
numbers_list = map(int, numbers_strings)

for x in numbers_list:

1 个答案:

答案 0 :(得分:1)

它是heapq.nsmallest的用途:

>>> import heapq
>>> l=[10, 12, 2, 2, 5 ,15]
>>> print(heapq.nsmallest(2, set(l))) [1]
5

请注意,set(l)用于删除重复索引!感谢Jon Clements提醒评论

此外,您可以使用sorted(iterable)[:n][1]查找{{1>}给出最小索引的第二小

堆的最重要特征是sorted(iterable)[:n]始终是最小的项目。更多- 结束后,可以使用heap[0]方法轻松找到后续项目 弹出第一个项目并将其替换为下一个最小的项目(一个操作 需要O(log N)操作,其中N是堆的大小)

heapq.heappop()

source code

nsmallest