4 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
sorted(sorted_list, key=lambda x: (x.isnumeric(),int(x) if x.isnumeric() else x))
這也按整數(shù)的值排序

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
你可以試試這個(gè)??梢酝ㄟ^(guò)使用來(lái)實(shí)現(xiàn)所需的輸出str.isdigit
sorted(l,key=lambda x:(x.isdigit(),x))
# ['A', 'P', 'V', 'Z', '1', '3', '4', '9']
注意:此解決方案不處理多于一個(gè)的數(shù)字。請(qǐng)看一下@Martin 的回答。

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果你想讓它考慮負(fù)數(shù)、小數(shù)和小寫(xiě)字母:
li = ['A', 'b', '-400', '1.3', '10', '42', 'V', 'z']
threshold = abs(min(float(x) for x in li if not x.isalpha())) + ord('z') + 1
sorted_list = sorted(li,
key=lambda x: ord(x) if x.isalpha() else threshold + float(x))
sorted_list:
['A', 'V', 'b', 'z', '-400', '1.3', '10', '42']

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊
list1 = ['4', '1', '3', '9', 'Z', 'P', 'V', 'A']
number = []
alphabet = []
for l in list1:
if l.isnumeric():
number.append(l)
else:
alphabet.append(l)
number = sorted(number)
alphabet = sorted(alphabet)
list1 = alphabet + number
print(list1)
輸出
添加回答
舉報(bào)