当前位置 : 主页 > 编程语言 > python >

python之sort与sorted函数的区别

来源:互联网 收集:自由互联 发布时间:2022-08-15
sort与sorted方法主要区别: 方法 应用对象 是否修改原对象 返回值 sort() 列表 是 None sorted() 所有可迭代对象 否 返回新列表 sort(self, key, reverse): reverse默认为False,升序 降序则,reverse=Tr

sort与sorted方法主要区别:

方法

应用对象

是否修改原对象

返回值

sort()

列表

None

sorted()

所有可迭代对象

返回新列表

sort(self, key, reverse):

reverse默认为False,升序

降序则,reverse=True

l = [9, 4, 2 ,5, 1, 2, 10]
re = l.sort(reverse= True)
print(l)
print(re)

#结果
[10, 9, 5, 4, 2, 2, 1]
None

# 集合使用sort()
print(set(l).sort())
# 报错
AttributeError: 'set' object has no attribute 'sort'


sorted(__iterable, key, reverse)

__iterable:可迭代对象,必须

key:排序字段,传入函数,可选

reverse:升序/降序,默认升序

 

l = [9, 4, 2 ,5, 1, 2, 10]
s = set(l)
print(s, '类型:',type(s))
new_l = sorted(l)
new_s = sorted(s)
print('返回新列表:', new_l)
print('返回新列表:', new_s)
print('集合经过sorted()后,返回的是列表', type(new_s))
print('原列表不变:', l)
print('原集合不变:', s)

# 执行结果
{1, 2, 4, 5, 9, 10} 类型: <class 'set'>
返回新列表: [1, 2, 2, 4, 5, 9, 10]
返回新列表: [1, 2, 4, 5, 9, 10]
集合经过sorted()后,返回的是列表 <class 'list'>
原列表不变: [9, 4, 2, 5, 1, 2, 10]
原集合不变: {1, 2, 4, 5, 9, 10}

指定key排序

d = dict(z=3, a=9, f=6, e=1)
# 以value字段排序,返回key列表
new_d1 = sorted(d.keys(), key= lambda x:d[x])
print(new_d1)
# 以key排序,降序,返回key_value列表
new_d2 = sorted(d.items(), key= lambda x:x[0], reverse= True)
print(new_d2)

# 执行结果
['e', 'z', 'f', 'a']
[('z', 3), ('f', 6), ('e', 1), ('a', 9)]




网友评论