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

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

僅當較早的數字小于當前數字時,如何在python列表中查找數字與較早數字的差異

僅當較早的數字小于當前數字時,如何在python列表中查找數字與較早數字的差異

MM們 2022-10-11 21:38:25
我有一個清單my_list = [6, 9, 10, 0, 5]如何編寫代碼以獲取一個數字與其早期數字的所有差異的列表,前提是它大于早期數字my_list[0]沒有更早的號碼my_list[1] = 9這比my_list[0]我們能找到的差別更大9-6 = 3?,F在answer_list=[3]。my_list[2] = 10大于my_list[0],my_list[1] answer_list = [3, 1, 4]my_list[3] = 0沒有前一個數字小于2。沒做什么my_list[4] = 5. my_list[3]小于my_list[4]。answer_list = [3, 1, 4, 5]應該return [3, 1, 4, 5]我的解決方案是def ans(my_list):    new_list = []    for x in my_list:        for i in range(my_list.index(x)):            if x >= my_list[i]:                diff = x - my_list[i]                new_list.append(diff)    return new_list有沒有更好的方法呢,嵌套循環有點過度殺戮和耗時
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

您需要兩個循環,但index如果您使用enumerate.


my_list = [6, 9, 10, 0, 5]


result = []

for index, value in enumerate(my_list[1:], start=1):

    for previous_value in my_list[:index]:

        difference = value - previous_value

        if difference > 0:

            result.append(difference)


print(result)

獎勵:如果您在原始列表中有重復的數字,您的算法就會出現問題,例如[6, 9, 10, 9, 10, 0, 5]. 這種方法可以解決它。你的結果:[3, 4, 1, 3, 4, 1, 5],正確的結果:[3, 4, 1, 3, 4, 1, 1, 5]


嵌套較少,但可讀性較差:


result = []

for index, value in enumerate(my_list[1:], start=1):

    result.extend(filter(lambda x: x > 0, (value - previous_value for previous_value in my_list[:index])))

print(result)


查看完整回答
反對 回復 2022-10-11
  • 1 回答
  • 0 關注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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