我得到了這個練習:將未知數量的正整數作為輸入。假設第一個數字總是小于第二個,所有數字都是唯一的,并且輸入至少包含三個整數。列印第二小的整數。我想出了這段代碼:
list=[10,12,1,3,2]
#find smallest number
if list[0]>list[1]:
smallest = list[1]
else:
smallest = list[0]
if smallest>list[2]:
smallest = list[2]
if smallest > list[3]:
smallest = list[3]
if smallest > list[4]:
smallest = list[4]
#remove smallest number from list
list.remove(smallest)
#find smallest number in new list
if list[0]>list[1]:
second_smallest = list[1]
else:
second_smallest = list[0]
if second_smallest > list[2]:
second_smallest = list[2]
if second_smallest > list[3]:
second_smallest = list[3]
print(second_smallest)
我能做些什么來簡化它?謝謝!
uj5u.com熱心網友回復:
您可以使用python的串列排序方法:
my_list = [10, 12, 1, 3, 2]
my_list.sort()
print(my_list[1])
uj5u.com熱心網友回復:
sample_list = [10, 12, 1, 3, 2]
smallest = sample_list[0]
second_smallest = sample_list[1]
for i in range(2, len(sample_list)):
if sample_list[i] < smallest:
smallest = sample_list[i]
elif sample_list[i] < second_smallest:
second_smallest = sample_list[i]
>>> print(smallest)
>>> 1
>>> print(second_smallest)
>>> 2
uj5u.com熱心網友回復:
numbers = ...
smallest = numbers[0]
second_smallest = numbers[1]
for index in range(2, len(numbers)):
number = numbers[index]
if number < smallest:
second_smallest = smallest
smallest = number
elif number < second_smallest:
second_smallest = number
print(second_smallest)
該解決方案利用了前兩個數字按順序排列的假設。當然,如果您能夠使用 python 內置程式,您可以使用以下代碼:
print(sorted(numbers)[1])
uj5u.com熱心網友回復:
nsmallestinheapq應該是你需要的:
>>> lst = [2, 21, 20, 63, 53, 0, 38, 20, 11, 26]
>>> from heapq import nsmallest
>>> nsmallest(2, lst)[-1]
2
uj5u.com熱心網友回復:
您可以首先使用該min函式獲取串列中的最小數字。
num_list = [10, 12, 1, 3, 2]
min_num = min(num_list)
然后,通過過濾來創建一個新串列,min_num使得最小的數量filtered_list實際上是初始串列的第二小值。
filtered_list = [n for n in num_list if n != min_num]
print(min(filtered_list))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490974.html
上一篇:保存名稱略有不同的檔案
