zoukankan      html  css  js  c++  java
  • Python中sort()和sorted()的区别

    1、sort()是可变对象(字典)的方法,无参数无返回值,  sort()会改变可变对象,因此无需返回值。例如:

    list:

    1 >>> a = [4,3,7,8]
    2 >>> a.sort()
    3 >>> a
    4 [3, 4, 7, 8]

    即sort()直接将可变对象的值给改变了。

    或者:

    1 >>> elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")]
    2 >>> elements.sort()
    3 >>> elements
    4 [(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')]  #elements.sort() 按每个元组的第一个元素排序
    5 >>> 

    2、sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。

    list:

    1 >>> a = [4,3,7,8]
    2 >>> sorted(a)
    3 [3, 4, 7, 8]
    4 >>> a
    5 [4, 3, 7, 8]

    即sorted会返会一个list副本,同时将原来list的值改变了可将这个返回的值赋给其他变量。

    dict:

    1 >>> b = {1:'ab',2:'degg',4:'ght',9:'d'}
    2 >>> sorted(b)
    3 [1, 2, 4, 9]
    4 >>> b
    5 {1: 'ab', 2: 'degg', 4: 'ght', 9: 'd'}

    即sorted(dict)时,是按key排序,同时将key返回成一个列表。

    或者指定排序的条件:

     1 >>> b = {1:'ab',2:'degg',4:'ght',9:'d'}
     2 >>> sorted(b.items(),key=lambda i:i[0])            #指定按字典里面的键排序
     3 [(1, 'ab'), (2, 'degg'), (4, 'ght'), (9, 'd')]   
     4 >>> 
     5 >>> 
     6 >>> sorted(b.items(),key=lambda i:len(i[1]))       #指定按字典里的value长度排序,默认从小到大
     7 [(9, 'd'), (1, 'ab'), (4, 'ght'), (2, 'degg')]
     8 >>> 
     9 >>> 
    10 >>> sorted(b.items(),key=lambda i:len(i[1]),reverse=True)   #指定按字典里的value长度排序,同时进行翻转,即按value的长度从大到小排列
    11 [(2, 'degg'), (4, 'ght'), (1, 'ab'), (9, 'd')]

    过程为:b.iterms()得到字典b的[ (键,值)] 列表,通过key这个参数,指定排序的方式是键 ( [0] ) 还是值( [1] ),reverse = True表示是需要翻转的,默认是从小到大,翻转的话,那就是从大到小。

    参考:

    http://www.cnblogs.com/xiao--yao/p/5024542.html

    http://www.cnpythoner.com/post/266.html

  • 相关阅读:
    Truck History(poj 1789)
    Highways poj 2485
    117. Populating Next Right Pointers in Each Node II
    116. Populating Next Right Pointers in Each Node
    115. Distinct Subsequences
    114. Flatten Binary Tree to Linked List
    113. Path Sum II
    109. Convert Sorted List to Binary Search Tree
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
  • 原文地址:https://www.cnblogs.com/nklzj/p/6850910.html
Copyright © 2011-2022 走看看