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

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

python:在不使用循環的情況下在列表中查找升序/降序元素

python:在不使用循環的情況下在列表中查找升序/降序元素

天涯盡頭無女友 2022-12-20 14:31:49
假設我有一個列表,我需要在列表“a”中分別以遞增/遞減順序找到兩個列表。a=[4,2,6,5,2,6,9,7,10,1,2,1]輸出應該是一個列表:b=[4,6,9,10] # in an ascending order和c=[4,2,1] # in a decreasing order , c[-1] is the first '1' in list a, c[1] is the first '2' in list a.有沒有一種不使用循環的方法可以做到這一點(我已經使用循環解決了它)?由于數據集很大,使用循環會很慢。因此,如果可能的話,我正在尋找一種更快的方法。非常感謝。
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

你能確定你的問題嗎:

  • 你想找到最長的上升/下降子列表嗎?在這種情況下,你的問題與動態規劃有關,我認為你需要不止一個循環......

  • 如果您不希望您的子列表最大,也許您可以對列表 b 和 c 的長度設置限制以更快地完成。

    • 如果您的列表中有其他假設,例如,您知道它的最大值和最小值,則可以在達到最大值時停止計算(僅當您希望列表嚴格遞減/遞增時)。

我希望它對你有用:)


查看完整回答
反對 回復 2022-12-20
?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

您應該使用 .sort() 方法。如果未輸入任何參數,則它會自動按升序對列表進行排序。對于降序,只需執行 .sort(reverse=True)。


b = a.sort()

#ascending


c = a.sort(reverse=True)

#descending

我希望這就是您要找的。


查看完整回答
反對 回復 2022-12-20
?
寶慕林4294392

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

為了明確我的問題,以下是我如何獲得這兩個列表:


b=[];c=[];

for i in range(len(a)):

    if i==0:

        b.append(a[i])

    elif a[i]>b[-1]:

        b.append(a[i])

for i in range(len(a)):

   if i==0:

       c.append(a[i])

   elif a[i]<c[-1]:

       c.append(a[i])


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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