【问题标题】:How does `key=function` in `sorted(tuple, key=function)` work?`sorted(tuple, key=function)` 中的 `key=function` 是如何工作的?
【发布时间】:2016-01-12 19:53:18
【问题描述】:

给定一个非空元组列表,返回一个按每个元组中最后一个元素升序排序的列表。

例如[(1, 7), (1, 3), (3, 4, 5), (2, 2)] 产生 [(2, 2), (1, 3), (3, 4, 5), ( 1, 7)]

提示:使用自定义 key= 函数从每个元组中提取最后一个元素。

问题的解决方法是:

def last(a): 
   return a[-1]
def sort_last(tuples):  
   return sorted(tuples, key=last)

谁能帮我理解传递给last 函数的参数是什么?具体来说,a 包含什么?

sorted 方法中调用last 函数时,我们没有传递任何值或参数。

【问题讨论】:

标签: python sorting tuples


【解决方案1】:

这就是所谓的“lambda”。

它将列表的当前元素传递给函数“last”,然后该函数将获取元组的最后一个元素。

所以参数“a”是当前正在处理的元组。

【讨论】:

  • 这不是 lambda。 Lambda 在前面说lambda。我们在这里将一个命名函数作为key 传递。
  • 它正在使用排序函数正在处理的列表中的值。 en.wikipedia.org/wiki/Lambda_calculus 这是 lambda 的变体。
  • 不相关。 Lambda 是用于创建函数的特定语法结构;函数是否为 lambda 函数与函数的使用方式无关。
  • @crey4fun 谢谢你的帮助。
【解决方案2】:

通过 for 循环遍历元组 - (使用元组的第二个元素排序的初始列表。) 嵌套 for 循环 - 将原始元组与已排序的第二个元素列表进行比较。

tuple1 = [(2, 5), (1, 2), (4, 4), (2, 3), (2, 1)]

List2 =[]
List3 =[]

for t in tuple1:
    List2.append(t[1],)

List2.sort()
print(List2)

for l in List2:
    for q in tuple1:
        if l == int(q[1],):
            List3.append(q)

print(List3)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2015-07-12
  • 1970-01-01
  • 2021-04-08
  • 2020-09-09
  • 2017-04-26
相关资源
最近更新 更多