有没有一种非常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
提交
取消