一个账号 发表于 2020-3-18 13:08:45

Python sorted() 函数

本帖最后由 一个账号 于 2020-3-19 20:51 编辑

Python sorted() 函数

语法

sorted(iterable, /, *, key=None, reverse=False)

参数



参数描述

iterable可迭代对象

key一个函数,将可迭代对象中的每一个元素调用这个函数,用函数的返回值来比较

reverse排序规则,True 降序 , False 升序(默认)



描述

sorted() 函数对所有可迭代的对象进行排序操作。

返回值

返回重新排序的列表。

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

list 的 sort() 方法是在原列表上操作,而内 sorted() 函数返回的是一个新列表。

通常使用 sort() 的效率比 sorted() 高:

import time

start = time.perf_counter()

.sort()

print("sort():", time.perf_counter() - start)

start = time.perf_counter()

sorted()

print("sorted():", time.perf_counter() - start)

执行结果:

sort(): 2.699999999966618e-06
sorted(): 4.700000000024129e-06

例子

>>> sorted()

>>> sorted(, reverse=True)

>>> sorted("532,4&%!dkjw", reverse=True)
['w', 'k', 'j', 'd', '5', '4', '3', '2', ',', '&', '%', '!']
>>> sorted("532,4&%!dkjw", reverse=False)
['!', '%', '&', ',', '2', '3', '4', '5', 'd', 'j', 'k', 'w']
>>> sorted("123456", key=lambda x: 2 if int(x) % 2 == 0 else 1)# 将奇数放到前面,因为是从小到大排列
['1', '3', '5', '2', '4', '6']
>>> sorted(["abcd", "ab", "abcdefg", "abcd"], key=len)
['ab', 'abcd', 'abcd', 'abcdefg']

永恒的蓝色梦想 发表于 2020-3-19 20:18:17

相比于time.perf_counter,我更喜欢time.process_time{:10_248:}

永恒的蓝色梦想 发表于 2020-3-19 21:37:34

一个账号 发表于 2020-3-19 20:50
为什么?

process_time只记录CPU实际运行时间(其实和perf_counter没啥区别)>>> from time import perf_counter as perf,process_time as proc,sleep
>>> def tperf():
        t=perf()
        sleep(5)
        return perf()-t

>>> def tproc():
        t=proc()
        sleep(5)
        return proc()-t

>>> tperf()
4.999445299999991
>>> tproc()
0.0

一个账号 发表于 2020-3-19 21:52:58

永恒的蓝色梦想 发表于 2020-3-19 21:37
process_time只记录CPU实际运行时间(其实和perf_counter没啥区别)

建议不要使用逗号和在一起导入

永恒的蓝色梦想 发表于 2020-3-19 21:57:55

一个账号 发表于 2020-3-19 21:52
建议不要使用逗号和在一起导入

其实我也知道
但懒是挡不住的{:10_248:}
页: [1]
查看完整版本: Python sorted() 函数