当前位置: 首页 > 面试题库 >

Python sort()函数有哪些参数?

贺兴平
2023-03-14
问题内容

除之外key,是否还有其他参数,例如:value


问题答案:

sort和的参数sorted

双方sortsorted有三个关键字参数:cmpkeyreverse

L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;
cmp(x, y) -> -1, 0, 1

sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

最好使用keyreverse,因为它们比等效的要快得多cmp

key应该是一个接受项目并返回值进行比较和排序的函数。reverse允许颠倒排序顺序。

使用key参数

您可以operator.itemgetter用作键参数,以按元组中的第二,第三等进行排序。

>>> from operator import itemgetter

>>> a = range(5)
>>> b = a[::-1]
>>> c = map(lambda x: chr(((x+3)%5)+97), a)
>>> sequence = zip(a,b,c)

# sort by first item in a tuple
>>> sorted(sequence, key = itemgetter(0))
[(0, 4, 'd'), (1, 3, 'e'), (2, 2, 'a'), (3, 1, 'b'), (4, 0, 'c')]

# sort by second item in a tuple
>>> sorted(sequence, key = itemgetter(1))
[(4, 0, 'c'), (3, 1, 'b'), (2, 2, 'a'), (1, 3, 'e'), (0, 4, 'd')]

# sort by third item in a tuple
>>> sorted(sequence, key = itemgetter(2))
[(2, 2, 'a'), (3, 1, 'b'), (4, 0, 'c'), (0, 4, 'd'), (1, 3, 'e')]

说明

序列可以包含任何对象,甚至不具有可比性,但是如果我们可以定义一个函数,该函数可以为每个项目进行比较,则可以将该函数的key参数传递给sortor
sorted

itemgetter特别是创建一个从其操作数中获取给定项目的函数。文档中的示例:

之后,f=itemgetter(2)呼叫f(r)返回r[2]

迷你基准,keyvscmp

出于好奇keycmp性能的考虑,越小越好:

>>> from timeit import Timer
>>> Timer(stmt="sorted(xs,key=itemgetter(1))",setup="from operator import itemgetter;xs=range(100);xs=zip(xs,xs);").timeit(300000)
6.7079150676727295
>>> Timer(stmt="sorted(xs,key=lambda x:x[1])",setup="xs=range(100);xs=zip(xs,xs);").timeit(300000)
11.609490871429443
>>> Timer(stmt="sorted(xs,cmp=lambda a,b: cmp(a[1],b[1]))",setup="xs=range(100);xs=zip(xs,xs);").timeit(300000)
22.335839986801147

因此,排序的速度key似乎至少是的两倍cmp。使用itemgetter而不是lambda x: x[1]使排序更快。



 类似资料:
  • 本文向大家介绍vue-router钩子函数有哪些?都有哪些参数?相关面试题,主要包含被问及vue-router钩子函数有哪些?都有哪些参数?时的应答技巧和注意事项,需要的朋友参考一下 全局的:beforeEach、beforeResolve、afterEach 路由的:beforeEnter 组件的:beforeRouteEnter、beforeRouteUpdate、beforeRouteLea

  • 本文向大家介绍BN的参数有哪些?相关面试题,主要包含被问及BN的参数有哪些?时的应答技巧和注意事项,需要的朋友参考一下  

  • 本文向大家介绍addEventListener的参数有哪些?相关面试题,主要包含被问及addEventListener的参数有哪些?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: addEventListener(event, function, useCapture) 其中,event指定事件名;function指定要事件触发时执行的函数;useCapture指定事件是否在捕获或冒泡阶段

  • 本文向大家介绍JVM 配置常用参数有哪些?相关面试题,主要包含被问及JVM 配置常用参数有哪些?时的应答技巧和注意事项,需要的朋友参考一下 垃圾回收参数 -Xnoclassgc 是否对类进行回收 -verbose:class -XX:+TraceClassUnloading 查看类加载和卸载信息 -XX:SurvivorRatio Eden和其中一个survivor的比值 -XX:Pretenur

  • 本文向大家介绍js函数定义方式有哪些?相关面试题,主要包含被问及js函数定义方式有哪些?时的应答技巧和注意事项,需要的朋友参考一下 三种 var a = function(){} function a(){} var a =new Function(){}

  • 本文向大家介绍js函数调用方式有哪些?相关面试题,主要包含被问及js函数调用方式有哪些?时的应答技巧和注意事项,需要的朋友参考一下 function func() { console.log(1) } func(); func.apply(); func.call();