栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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中按自定义键排序列表


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653477.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号