operator.itemgetter()和sort()如何工作?

operator.itemgetter()和sort()如何工作?,第1张

operator.itemgetter()和sort()如何工作?

看起来您对所有这些东西有些困惑。

operator
是一个内置的模块,提供了一组方便的 *** 作员。用两个词
operator.itemgetter(n)
构造一个可调用对象,该对象假定一个可迭代对象(例如,列表,元组,集合)为输入,并从中获取第n个元素。

因此,您不能

key=a[x][1]
在那里使用它,因为python不知道它是什么
x
。相反,您可以使用一个
lambda
函数
elem
只是一个变量名,没有魔术):

a.sort(key=lambda elem: elem[1])

或者只是一个普通的功能:

def get_second_elem(iterable):    return iterable[1]a.sort(key=get_second_elem)

因此,这里有个重要的注意事项:python函数是一等公民,因此您可以将它们作为参数传递给其他函数。

其他问题:

  1. 是的,您可以反向排序,只需添加
    reverse=True
    a.sort(key=..., reverse=True)
  2. 要按多个列进行排序,您可以将
    itemgetter
    多个index:
    operator.itemgetter(1,2)
    或lambda:一起使用
    lambda elem: (elem[1], elem[2])
    。这样,可迭代地为列表中的每个项目构造可迭代变量,然后按lexicographic(?)顺序将它们相互比较(比较第一个元素,如果相等,则比较第二个元素,依此类推)
  3. 您可以使用
    a[2,1]
    [索引为0的索引]在[3,2]处获取值。使用运算符…可能,但是不像索引那样干净。

有关详细信息,请参阅文档:

  1. operator.itemgetter
    解释
  2. 在Python中按自定义键排序列表


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5655580.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存