Python中sort() 和sorted() 对比

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,而不是在原来的基础上进行的操作。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值