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

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

Python 列表 - 對整數(shù)排序,然后對字符串進(jìn)行排序

Python 列表 - 對整數(shù)排序,然后對字符串進(jìn)行排序

慕田峪9158850 2021-08-14 17:19:39
我需要使用該sorted()函數(shù)才能從這里獲得:test2 = [1,'2',3,'4',5,'A']到這里(創(chuàng)建一個新列表,它首先包含已排序的整數(shù),然后是已排序的字符串):test2 = [1,3,5,'2','4','A']
查看完整描述

3 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

sorted(test2, key=lambda x: (isinstance(x, str), x))

這依賴于False < True元組按字典順序排序的事實。

更多細(xì)節(jié):

元組通常用于按多個指標(biāo)進(jìn)行排序??紤]一下:

key=lambda x: isinstance(x, str)

key關(guān)鍵字參數(shù)來sorted告訴它由給定的調(diào)用,而不是由vaules自己的結(jié)果值進(jìn)行排序。此鍵將返回False整數(shù)和True字符串。由于False相當(dāng)于0Trueto1,False被認(rèn)為更小,所有整數(shù)將在列表中排在第一位。

這只是我們想要的一半,因為整數(shù)和字符串之間沒有排序。這是元組進(jìn)來的。上面的關(guān)鍵功能:

key=lambda x: (isinstance(x, str), x)

為每個元素返回一個元組。元組首先按它們的第一個元素排序。如果兩個元組具有等效的第一個元素,則比較它們的第二個元素,依此類推。這稱為詞典排序。假設(shè)我們有這個列表:

this = ["a", 5, "b", 3]

key 函數(shù)將按順序返回:

(True, "a"), (False, 5), (True, "b"), (False, 3)

元組將首先按它們的第一個元素(布爾值)排序:

(False, 5), (False, 3), (True, "a"), (True, "b")

現(xiàn)在,我們有兩對元組,它們的第一個元素相等。每對將按其第二個元素在內(nèi)部排序:

(False, 3), (False, 5), (True, "a"), (True, "b")

最終結(jié)果不是元組本身,而是每個元組的關(guān)鍵函數(shù)的相應(yīng)輸入:

[3, 5, "a", "b"]

實際上,該算法不需要“兩次”排序,但概念上是相同的。


查看完整回答
反對 回復(fù) 2021-08-14
  • 3 回答
  • 0 關(guān)注
  • 298 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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