有沒有一種非常Python式的方法來按內部數組的長度對二維數組進行排序?例如轉動這個:[][[23, 70, 90]][[23, 70, 90], [48, 56, 99]][[23, 70, 90], [48, 56, 99], [79, 89, 91]][[23, 70, 90], [79, 89, 91]][[48, 56, 99]][[48, 56, 99], [79, 89, 91]][[79, 89, 91]]進入:[[23, 70, 90], [48, 56, 99], [79, 89, 91]][[23, 70, 90], [48, 56, 99]][[23, 70, 90], [79, 89, 91]][[48, 56, 99], [79, 89, 91]][[23, 70, 90]][[48, 56, 99]][[79, 89, 91]][]當然有一行代碼可以做到這一點嗎?
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
肯定有!Python 的排序有一個key可選參數,它允許傳入一個函數來操作并返回列表中每個項目的一些修改版本以用于排序。
冗長但易于閱讀的方法是定義一個函數并將其傳遞給它:
def x(e):
return len(e)
my_list.sort(key=x)
但單行方法是使用 lambda(完整的工作示例在下面):
l = [[],
[[23, 70, 90]],
[[23, 70, 90], [48, 56, 99]],
[[23, 70, 90], [48, 56, 99], [79, 89, 91]],
[[23, 70, 90], [79, 89, 91]],
[[48, 56, 99]],
[[48, 56, 99], [79, 89, 91]],
[[79, 89, 91]]]
def print_arr(a):
for x in a:
print(x)
print_arr(l)
# here she is!
l.sort(key=lambda x: len(x)) # add the optional 'reverse=True' param if desired
print_arr(l)
添加回答
舉報
0/150
提交
取消