按内部数组的长度降序对二维数组进行排序?

有没有一种非常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]]

[]

当然有一行代码可以做到这一点吗?


明月笑刀无情
浏览 128回答 1
1回答

猛跑小猪

肯定有!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 desiredprint_arr(l)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python