![](/img/trans.png)
[英]Find the smallest number that is greater than a given number in a sorted list
[英]python: second smallest value in list when number of smallest elements is greater than 1
以下代碼僅在列表中的元素彼此不同時才返回第二小的值,但在這種情況下,由於 '1' 出現了兩次,所以第二小的打印數字仍然是 '1'。 如何解決這個問題?
l=[1,2,1,3,4,5,6,2,7]
print(sorted(l)[1])
這不是最有效的方法,但比對集合排序要快得多:
l=[1,2,1,3,4,5,6,2,7]
min1 = min(l)
min2 = min(i for i in l if i > min1)
print(sorted(list(set(l)))[1])
你必須擺脫重復
您可以使用set
來僅獲取列表中的唯一元素。 然后對集合進行排序並獲取索引 1 上的元素。
l = [1, 2, 1, 3, 4, 5, 6, 2, 7]
sorted(set(l))[1]
>> 2
l=[1,2,1,3,4,5,6,2,7]
min = 100
sub_min = 100
for i in range(len(l)):
if l[i] < min:
min = l[i]
if l[i] < sub_min and l[i] > min:
sub_min = l[i]
# print(min, sub_min)
這可能看起來很粗糙,但是如果您不想使用 'sorted' 方法並且需要線性運行時,您可以使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.