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

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

按升序合并 2 個排序列表

按升序合并 2 個排序列表

qq_花開花謝_0 2021-08-17 15:39:02
有沒有辦法合并 2 個排序列表,其中 list1 按升序排列,list2 按降序排列,但新合并的列表應按升序排列。我希望在不使用任何內置函數或遞歸的情況下做到這一點。我有以下內容,但只有當 list2 也是按升序排列時才有效。def merge2(list1, list2):    results = []    while len(list1) and len(list2):        if list1[0] < list2[0]:            results.append(list1.pop(0))        else:            results.append(list2.pop(0))    results.extend(list1)    results.extend(list2)    return results該函數應產生以下內容:merge2([1,3,11,34],[60,38,7,1,0]) => [0,1,1,3,7,11,34,38,60]
查看完整描述

2 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

您可以比較 of 的第一個元素list1和最后一個元素,list2也可以pop從list2with的末尾開始pop()(不帶任何參數)。最后,你可以append在剩下的列表中l(wèi)ist2,以result與pop()直至一個也不剩。


因此,稍加修改,您的代碼將變?yōu)椋?/p>


def merge2(list1, list2):

    results = []

    while list1 and list2:

        if list1[0] < list2[-1]:

            results.append(list1.pop(0))

        else:

            results.append(list2.pop())

    results.extend(list1)

    while list2:

        results.append(list2.pop())

    return results


print(merge2([1,3,11,34], [60,38,7,1,0]))

# [0, 1, 1, 3, 7, 11, 34, 38, 60]


查看完整回答
反對 回復 2021-08-17
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

你可以用for循環(huán)做基本上相同的事情。這意味著只有l(wèi)ist2突變。


def merge2(list1, list2):

    result = []

    for item in list1:

        while list2[-1] < item:

            result.append(list2.pop())

        result.append(item)

    while list2:

        result.append(list2.pop())

    return result

請注意,這不使用len(這是一個內置函數)


查看完整回答
反對 回復 2021-08-17
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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