1、List.sort()方法
描述:sort() 函数为python列表的内置方法list.sort(),作用是对列表进行原地排序,只使用 <
来进行各项间比较。
语法:
list.sort(cmp=None, key=None, reverse=False)
- key 形参的值应该是个函数(或其他可调用对象),它接受一个参数并返回一个用于排序的键。这个函数用于从每个列表元素中提取比较键 (例如
key=str.lower
)。 对应于列表中每一项的键会被计算一次,然后在整个排序过程中使用。 默认值None
表示直接对列表项排序而不计算一个单独的键值。 - reverse 为一个布尔值。 如果设为
True
,则每个列表元素将按反向顺序比较进行排序。
不使用key进行排序:
import random
list_single=[random.randrange(100) for i in range(10)]
print("org list_single:{}".format(list_single))
list_single.sort(reverse=False)
print("after sortlist_single : {}".format(list_single))
return_value=list_single.sort(reverse=True)
print(return_value)
#org list_single:[17, 19, 24, 50, 23, 36, 59, 88, 11, 33]
#after sort: list_single[11, 17, 19, 23, 24, 33, 36, 50, 59, 88]
#return_value=None
使用key进行排序,按照列表元素第一个值排序:
import random
def get_element(list_x):
return list_x[0]
list_double=[[random.randrange(10),random.randrange(10)] for i in range(5)]
print("org list_double{}".format(list_double))
list_double.sort(key=get_element,reverse=True)
#list_double.sort(key=lambda list_double:list_double[0],reverse=True)
print("after sort list_double : {}".format(list_double))
return_value=list_double.sort(reverse=True)
print(return_value)
# org list_double[[8, 9], [2, 4], [6, 5], [2, 8], [1, 7]]
# after sort list_double : [[8, 9], [6, 5], [2, 4], [2, 8], [1, 7]]
# None
2、sorted()方法
描述:sorted() 函数为python内置函数,作用是对所有可迭代的对象进行排序操作。
语法:
sorted(iterable, cmp=None, key=None, reverse=False)
- iterable -- 可迭代对象。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
不使用key&cmp
import random
list_single=[random.randrange(10) for i in range(10)]
print("org list_single:{}".format(list_single))
after_sort=sorted(list_single)
print("org list_single:{}".format(list_single))
print("after sort list_single : {}".format(after_sort))
# org list_single:[1, 6, 1, 2, 0, 8, 4, 7, 3, 3]
# org list_single:[1, 6, 1, 2, 0, 8, 4, 7, 3, 3]
# after sort list_single : [0, 1, 1, 2, 3, 3, 4, 6, 7, 8]
使用key
import random
def get_element(list_x):
return list_x[0]
list_double=[[random.randrange(10),random.randrange(10)] for i in range(5)]
print("org list_double{}".format(list_double))
#after_sort=sorted(list_double,key=get_element,reverse=False)
after_sort=sorted(list_double,key=lambda list_double:list_double[0],reverse=False)
print("after sort list_double : {}".format(after_sort))
# org list_double[[5, 6], [8, 6], [6, 6], [4, 7], [6, 2]]
# after sort list_double : [[4, 7], [5, 6], [6, 6], [6, 2], [8, 6]]
3、list.sort()方法和sorted()方法对比
- 适用范围:list.sort() 方法只适用于列表,而 sorted() 函数可以接受任何可迭代对象。
- 返回值:list.sort() 方法会直接修改原列表,并返回
None
。sorted()返回排序后新的 list,而不是在原来的基础上进行的操作。