簡體   English   中英

python:當最小元素數大於1時列表中的第二個最小值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM