Python中sort与sorted函数有何本质差异?

2026-05-16 14:502阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计605个文字,预计阅读时间需要3分钟。

Python中sort与sorted函数有何本质差异?

sort与sorted方法主要区别:方法:sort() 是列表对象的方法,只能对调用它的列表进行排序。应用对象:sort() 直接修改原列表。是否修改原对象:sort() 会修改原列表,而sorted() 会返回一个新的排序列表,原列表保持不变。返回值:sort() 不返回任何值,而sorted() 返回排序列表。sort():列表是 + None,sorted() 所有可能迭代对象。否:sort() 返回新列表。sort(self, key, reverse):reverse默认为False,升序 + 降序则reverse=True。

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:升序/降序,默认升序

Python中sort与sorted函数有何本质差异?

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)]




标签:区别

本文共计605个文字,预计阅读时间需要3分钟。

Python中sort与sorted函数有何本质差异?

sort与sorted方法主要区别:方法:sort() 是列表对象的方法,只能对调用它的列表进行排序。应用对象:sort() 直接修改原列表。是否修改原对象:sort() 会修改原列表,而sorted() 会返回一个新的排序列表,原列表保持不变。返回值:sort() 不返回任何值,而sorted() 返回排序列表。sort():列表是 + None,sorted() 所有可能迭代对象。否:sort() 返回新列表。sort(self, key, reverse):reverse默认为False,升序 + 降序则reverse=True。

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:升序/降序,默认升序

Python中sort与sorted函数有何本质差异?

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)]




标签:区别