該問題要求構建一個函式,該函式將回傳除該串列中第一個遇到的最小數字之外的數字串列。如果提供了一個空串列,則回傳一個空串列。例如: [1, 2, 3, 1, 1] -> [2, 3, 1, 1] 我的代碼只回傳 [2, 3] 即使串列后面的兩個沒有遇到在第一個之前,因此不應回傳。我的代碼:
def remove_smallest(numbers):
list1 = []
if len(numbers) == 0:
return numbers
for number in numbers[:len(numbers)]:
if numbers.index(number) != numbers[numbers.index(min(numbers))]:
list1.append(number)
return list1
預期:[1, 2, 3, 1, 1] -> [2, 3, 1, 1] 輸出: [2, 3]
uj5u.com熱心網友回復:
使用 for 回圈和 if 陳述句,您已經過濾了所有不是最小數字的數字。
def remove_smallest(numbers):
if len(numbers) == 0:
return numbers
for number in numbers[:len(numbers)]:
if(number == min(numbers)):
numbers.remove(number)
break
return numbers
這將是一個更好的代碼。當 if 條件滿足并且指標進入 if 塊時,有一個 break 陳述句退出回圈。
也可以有更有效的方法來解決這個問題。
uj5u.com熱心網友回復:
然后復制輸入串列:
def remove_smallest(numbers):
if numbers is None or len(numbers) == 0:
return []
copy = numbers.copy()
copy.remove(min(numbers))
return copy
print(remove_smallest([1,0,0,1]))
輸出:
[1, 0, 1]
選擇:
def remove_smallest(numbers):
if numbers is None or len(numbers) == 0:
return []
i = numbers.index(min(numbers))
return numbers[:i] numbers[i 1:]
uj5u.com熱心網友回復:
解決方案非常簡單。用這個:
def remove_smallest(numbers):
smallest = min(numbers)
for number in numbers:
if number == smallest:
numbers.remove(number)
return numbers
希望這是你需要的
編輯:從你的問題來看,我假設可以有多個最小的數字。因此,請改用:
def remove_smallest(numbers):
smallest = min(numbers)
newList = []
for number in numbers:
if number != smallest:
newList.append(number)
return newList
Edit2:好的,現在我終于明白了你的問題。這是作業代碼:
def remove_smallest(numbers):
smallestIndex = numbers.index(min(numbers))
print(smallestIndex)
numbers.pop(smallestIndex)
return numbers
print(remove_smallest([1, 2, 3, 1, 1]))
輸出是:[2, 3, 1, 1]
這適用于所有測驗
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/421254.html
標籤:
