【问题标题】:lambda key and sorting in pythonpython中的lambda键和排序
【发布时间】:2018-03-14 18:21:42
【问题描述】:

我理解有困难:

key = lambda x: x[1]
list = [(i,sum(1 for y in lower_letters if y==i))

l.sort(cmp=lambda x,y: cmp(x[1],y[1]))) #only 2.x???
        cmp(a,b)

它是否返回与 '.sort' 不同的东西? 有人可以解释一下它应该做什么吗? 为什么我们不使用 list.sort() 之类的东西?

我真的不知道 x,y 是什么意思,那是我老师写的,我试图猜测她的意思

【问题讨论】:

  • 欢迎来到 SO。请提供 minimal reproducible example
  • 1) key 不在任何地方使用。为什么要定义它? 2)不要命名变量list,这是一个内置函数。 3) 什么是l

标签: python sorting lambda


【解决方案1】:

sort behavior 的文档中对此进行了解释

cmp 指定两个参数(可迭代元素)的自定义比较函数,根据第一个参数被认为小于、等于还是大于第二个参数,该函数应返回负数、零或正数:cmp =lambda x,y: cmp(x.lower(), y.lower())。默认值为无。

以及内置 int cmp function 的文档

比较两个对象 x 和 y 并根据结果返回一个整数。如果 x y,则严格为正。

【讨论】:

    【解决方案2】:

    @PalKol 你的问题不够清楚..

    据我了解,您想知道如何使用key = lambda ... 进行排序吗?

    我可以举一些例子:

    您有一个元组列表l = [(1,2), (3,4), (5,1), (2, 3)]

    1. 如果您使用sorted(l),这将按每个元组的第一个元素对列表进行排序,结果为[(1,2), (2,3), (3,4), (5,1)]

    2. 如果要按第二个元素排序,请使用sorted(l, key = lambda x: x[1]),这将得到[(5,1), (1,2), (2,3), (3,4)]。 No.1 也相当于sorted(l, key = lambda x: x[0])

    3. 如果要按总和排序:使用sorted(l, key = sum),结果为[(1,2), (2,3), (5,1), (3,4)]

    *以上 3 个示例从低到高排序。

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 2021-01-25
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2021-03-28
      • 2013-04-13
      • 2022-01-14
      相关资源
      最近更新 更多