亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在無限的 *args 列表中找到兩個最大值?

如何在無限的 *args 列表中找到兩個最大值?

白衣非少年 2023-10-26 15:50:40
我希望能夠打印出列表中的兩個最大值,并且我正在嘗試使用pop方法從列表中刪除 max1 值。我收到一條錯誤消息:AttributeError: 'tuple' object has no attribute 'pop'def findTwoLargest(*args):     max1 = max(args)     args.pop(max1)     max2 = max(args)         return max1, max2          maxResult1, maxResult2 = findTwoLargest(-2, 30, -4, 9, 1, 6)print(maxResult1, maxResult2)
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

由于 args 是一個元組,您無法刪除值,但您的函數會嘗試查找最大值 2 次,您可以使用以下命令更輕松地執行此操作:

def findTwoLargest(*args):
   maxes = sorted(args, reverse=True)[:2]
      return maxes[0], maxes[1]

它的作用是對 args 進行排序(它從元組創建一個新列表并返回排序后的列表),然后保留 2 個較大的元素,同時將它們存儲在列表 maxes 中。


查看完整回答
反對 回復 2023-10-26
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

從錯誤來看,參數似乎是作為元組而不是列表傳遞的。因此,在函數內部 args 被作為元組接收。因此,要刪除元素,您首先將元組更改為列表,從列表中刪除該元素并將其更改回元組。


 #converting the tuple to list

 listx = list(tuplex) 

 #use different ways to remove an item of the list

 listx.remove("c") 

 #converting the tuple to list

 tuplex = tuple(listx)

如果打印是唯一的目標,您還可以打印函數內的值而不是返回這些值。


查看完整回答
反對 回復 2023-10-26
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

args是一個元組,因此是不可變的并且不能修改。下面的代碼應該可以。


args = list(args)

if args:

    max1 = max(args)

    args.remove(max1)

    print(max1)

if args:

    max2 = max(args)

    args.remove(max2)

    print(max2)

args = tuple(args) # if a tuple is required.


查看完整回答
反對 回復 2023-10-26
  • 3 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號