美文网首页
sort() 与 sorted

sort() 与 sorted

作者: 叶田的学习笔记 | 来源:发表于2018-11-05 16:07 被阅读0次

sorted(iterable, , key=None, reverse=False)
list.sort(
, key=None, reverse=False)

iterable -- 可迭代对象。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

1、sorted()作用于任意可迭代的对象,而sort()一般作用于列表。

In [25]: a = (1,2,3,4)

In [26]: sorted(a)
Out[26]: [1, 2, 3, 4]

In [27]: a.sort()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-27-2ed0d7de6146> in <module>()
----> 1 a.sort()

AttributeError: 'tuple' object has no attribute 'sort'

2、sorted()会返回一个排序后的列表,原有列表保持不变,而sort()会直接修改原有的列表,函数返回为None。

In [28]: a = [34,4,3,56,66]

In [29]: sorted(a)
Out[29]: [3, 4, 34, 56, 66]

In [30]: a.sort()

In [31]:

因此如果实际应用过程中需要保留原有列表,使用sorted()较为合适,否则可以选择sort(),因为sort()不需要复制原有列表,消耗的内存较少,效率也较高。

3、key针对每个元素仅作一次处理。

from timeit import Timer

a_time = Timer(stmt='sorted(xs,key=lambda x:x[1])',setup='xs=range(100);xs=zip(xs,xs);').timeit(10000)
print(a_time)

4、sorted()能针对不同的数据结构进行排序,结合operator模块的itemgetter()方法实现。

operator.itemgetter()官方说明:
https://docs.python.org/3.6/library/operator.html?highlight=itemgetter#operator.itemgetter

对字典排序:

from operator import itemgetter

phonebook = {'Linda':'7750','Bob':'9345','Carol':'5834'}
sorted_pb = sorted(phonebook.items(),key=itemgetter(1))
print(sorted_pb)

结果:
[('Carol', '5834'), ('Linda', '7750'), ('Bob', '9345')]

对多维list排序:

from operator import itemgetter

gameresult = [
    ['Bob',95.00,'A'],
    ['Alan',86.00,'C'],
    ['Mandy',82.5,'A'],
    ['Rob',86,'E']
]

# 当等级相同的时候,分数从低到高排序
sorted_gr = sorted(gameresult, key=itemgetter(2,1))
print(sorted_gr)

结果:
[['Mandy', 82.5, 'A'], ['Bob', 95.0, 'A'], ['Alan', 86.0, 'C'], ['Rob', 86, 'E']]

相关文章

  • 2018-07-06 list

    sorted()与list.sort()的不同 list.sort() 方法返回none,sorted()返回结果...

  • Python基础(11) - 列表的排序

    对列表排序的方法 使用a.sort()方法 使用a = sorted(b)方法 列表Sort方法与sorted方法...

  • Python3高阶函数之sorted

    描述 sorted() 函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别:sort 是应用在...

  • 统计单词数量

    sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进...

  • python----sorted排序

    sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进...

  • Python3 sorted() 函数

    描述 sorted()函数对所有可迭代的对象进行排序操作。 sort与 sorted区别: sort是应用在 li...

  • Python- sort()和sorted()方法

    sort 与 sorted 区别: sort 是应用在list上的方法,sorted 可以对所有可迭代的对象进行排...

  • sort() 与 sorted

    sorted(iterable, , key=None, reverse=False)list.sort(, ke...

  • sorted() 与sort()

    一个字符串 S =“bca” return S.sort() #此时的返回值是Nonereturn sorte...

  • sort与sorted

    python中两个排序函数:sort():- list.sort(),是操作函数,没有返回值,在原list上操作-...

网友评论

      本文标题:sort() 与 sorted

      本文链接:https://www.haomeiwen.com/subject/jndsxqtx.html