为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

明月笑刀无情 2023-11-09 21:53:55
有没有一种非常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)


查看完整回答
反对 回复 2023-11-09
  • 1 回答
  • 0 关注
  • 70 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信