第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

函數(shù)為某些數(shù)組返回錯誤值

函數(shù)為某些數(shù)組返回錯誤值

慕慕森 2022-12-20 14:25:26
我最近開始編碼并且正在研究一個函數(shù),該函數(shù)返回給定數(shù)組中的 3 個最大數(shù)字。該函數(shù)適用于大多數(shù)數(shù)組,但不適用于其他數(shù)組。下面是代碼:def findThreeLargestNumbers(array):  list = []  if len(set(array)) != 1:    while len(list) <= 2:      for element in array:        if element == max(array):          list.append(element)          array.remove(element)    list.reverse()    return list  else:    for element in array:      newlist = [element, element, element]      return newlist例如,當我輸入數(shù)組 [1,2,3,4,5] 時,函數(shù)返回 [3,4,5]。但是,當我輸入 [55, 43, 11, 3, -3, 10] 時,該函數(shù)返回 4 個值:[10, 11, 43, 55]。為什么是這樣?太感謝了!
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

在 for 的末尾添加一個 break


  def findThreeLargestNumbers(array):

      list = []

      if len(set(array)) != 1:

        while len(list) <= 2:

          for element in array:

            if element == max(array):

              list.append(element)

              array.remove(element)

              break

        list.reverse()

        return list

      else:

        for element in array:

          newlist = [element, element, element]

          return newlist


查看完整回答
反對 回復 2022-12-20
?
慕姐8265434

TA貢獻1813條經(jīng)驗 獲得超2個贊

這個嵌套循環(huán)可以添加任意數(shù)量的元素list(順便說一句,這對于列表來說是一個壞名字,因為它會覆蓋內(nèi)置函數(shù)list()):


    while len(list) <= 2:

      for element in array:

        if element == max(array):

          list.append(element)

          array.remove(element)

您只檢查外層循環(huán)的長度list,但內(nèi)層循環(huán)遍歷整個數(shù)組,并可能list在再次檢查條件之前將所有這些添加到(如果數(shù)組是反向排序的)。


編寫此函數(shù)的一種更簡單的方法是簡單地對其進行排序并取最高的三個元素:


from typing import List


def find_three_largest_numbers(array: List[int]) -> List[int]:

    """Return the three largest numbers from the array."""

    return sorted(array)[-3:]

(編輯)不涉及排序的稍微復雜的版本:


def find_three_largest_numbers(array: List[int]) -> List[int]:

    """Return the three largest numbers from the array."""

    largest_3: List[int] = []

    for num in array:

        largest_3.append(num)

        if len(largest_3) > 3:

            largest_3.remove(min(largest_3))

    return largest_3

在此實現(xiàn)中,largest_3永遠不允許增長超過 3 個元素,因為每次增長到 4 個時,我們都會在添加更多元素之前刪除一個元素。


查看完整回答
反對 回復 2022-12-20
  • 2 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號