2 回答

TA貢獻1824條經驗 獲得超5個贊
您可以使用sorted以下內容key:
l = ['mix', 'xyz', 'apple', 'xanadu']
sorted(l, key=lambda x: (x[0]!='x', x))
# ['xanadu', 'xyz', 'apple', 'mix']
或@deepspace 建議使用str.startswith:
sorted(l, key=lambda s: (not s.startswith('x'), s))
上面的鍵是基于元組對字符串進行排序,由表達式產生的布爾值x[0]!='x'和字符串本身組成:
[(x[0]!='x', x) for x in l]
# [(True, 'mix'), (False, 'xyz'), (True, 'apple'), (False, 'xanadu')]
因此,排序的第一個標準是字符串是否以x(記住FalseandTrue被評估為0and 1)開頭,然后是字符串本身是否按字母數字排序。

TA貢獻1859條經驗 獲得超6個贊
如果您想生成另一個列表,可以使用 sorted 內置函數,但如果您不介意只更改當前列表,請使用方法list.sort:
>>> l = ['mix', 'xyz', 'apple', 'xanadu']
>>> l.sort(key=lambda s: (not s.startswith('x'), s))
>>> l
['xanadu', 'xyz', 'apple', 'mix']
添加回答
舉報