千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > python中sort和sorted的用法

python中sort和sorted的用法

来源:千锋教育
发布人:xqq
时间: 2024-02-26 18:47:20 1708944440

Python中的sort和sorted是非常常用的排序函数,它们可以对列表、元组、字典等数据类型进行排序。sort和sorted的区别在于,sort是在原列表上进行排序,而sorted则是返回一个新的已排序的列表。

_x000D_

sort和sorted函数的基本用法如下:

_x000D_

`python

_x000D_

# sort函数用法

_x000D_

list.sort(key=None, reverse=False)

_x000D_

# sorted函数用法

_x000D_

sorted(iterable, key=None, reverse=False)

_x000D_ _x000D_

其中,key和reverse是可选参数,key用于指定排序的关键字,reverse用于指定是否降序排序。

_x000D_

下面我们来看看sort和sorted的具体用法以及一些常见问题的解答。

_x000D_

## sort函数的用法

_x000D_

sort函数是在原列表上进行排序,它会改变原列表的顺序。sort函数的用法如下:

_x000D_

`python

_x000D_

# 对列表进行排序

_x000D_

list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

_x000D_

list1.sort()

_x000D_

print(list1) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

_x000D_

# 对元组进行排序

_x000D_

tuple1 = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)

_x000D_

list2 = list(tuple1)

_x000D_

list2.sort()

_x000D_

tuple2 = tuple(list2)

_x000D_

print(tuple2) # (1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9)

_x000D_

# 对字典按照键进行排序

_x000D_

dict1 = {'a': 3, 'c': 1, 'b': 2}

_x000D_

sorted_dict1 = sorted(dict1.items())

_x000D_

print(sorted_dict1) # [('a', 3), ('b', 2), ('c', 1)]

_x000D_

# 对字典按照值进行排序

_x000D_

sorted_dict2 = sorted(dict1.items(), key=lambda x: x[1])

_x000D_

print(sorted_dict2) # [('c', 1), ('b', 2), ('a', 3)]

_x000D_ _x000D_

从上面的例子可以看出,sort函数可以对列表、元组、字典进行排序,而且可以指定排序的关键字。

_x000D_

## sorted函数的用法

_x000D_

sorted函数是返回一个新的已排序的列表,它不会改变原列表的顺序。sorted函数的用法如下:

_x000D_

`python

_x000D_

# 对列表进行排序

_x000D_

list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

_x000D_

sorted_list1 = sorted(list1)

_x000D_

print(sorted_list1) # [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

_x000D_

# 对元组进行排序

_x000D_

tuple1 = (3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5)

_x000D_

sorted_tuple1 = tuple(sorted(tuple1))

_x000D_

print(sorted_tuple1) # (1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9)

_x000D_

# 对字典按照键进行排序

_x000D_

dict1 = {'a': 3, 'c': 1, 'b': 2}

_x000D_

sorted_dict1 = dict(sorted(dict1.items()))

_x000D_

print(sorted_dict1) # {'a': 3, 'b': 2, 'c': 1}

_x000D_

# 对字典按照值进行排序

_x000D_

sorted_dict2 = dict(sorted(dict1.items(), key=lambda x: x[1]))

_x000D_

print(sorted_dict2) # {'c': 1, 'b': 2, 'a': 3}

_x000D_ _x000D_

从上面的例子可以看出,sorted函数可以对列表、元组、字典进行排序,而且同样可以指定排序的关键字。

_x000D_

## sort和sorted的常见问题解答

_x000D_

### 1. sort和sorted函数的时间复杂度是多少?

_x000D_

sort和sorted函数的时间复杂度都是O(nlogn),其中n为待排序的元素个数。

_x000D_

### 2. sort和sorted函数的区别是什么?

_x000D_

sort函数是在原列表上进行排序,它会改变原列表的顺序。sorted函数是返回一个新的已排序的列表,它不会改变原列表的顺序。

_x000D_

### 3. sort和sorted函数的默认排序方式是什么?

_x000D_

sort和sorted函数的默认排序方式是升序排序。

_x000D_

### 4. 如何进行降序排序?

_x000D_

可以通过指定reverse=True来进行降序排序,例如:

_x000D_

`python

_x000D_

list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

_x000D_

list1.sort(reverse=True)

_x000D_

print(list1) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

_x000D_

sorted_list1 = sorted(list1, reverse=True)

_x000D_

print(sorted_list1) # [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

_x000D_ _x000D_

### 5. 如何指定排序的关键字?

_x000D_

可以通过指定key参数来指定排序的关键字,key可以是一个函数或lambda表达式,例如:

_x000D_

`python

_x000D_

list1 = ['abc', 'defg', 'hijkl', 'mn']

_x000D_

sorted_list1 = sorted(list1, key=len)

_x000D_

print(sorted_list1) # ['mn', 'abc', 'defg', 'hijkl']

_x000D_

dict1 = {'a': 3, 'c': 1, 'b': 2}

_x000D_

sorted_dict1 = sorted(dict1.items(), key=lambda x: x[1])

_x000D_

print(sorted_dict1) # [('c', 1), ('b', 2), ('a', 3)]

_x000D_ _x000D_

上面的例子中,key=len表示按照元素的长度进行排序,lambda x: x[1]表示按照字典的值进行排序。

_x000D_

##

_x000D_

sort和sorted是Python中常用的排序函数,它们可以对列表、元组、字典等数据类型进行排序。sort函数是在原列表上进行排序,而sorted则是返回一个新的已排序的列表。sort和sorted函数的时间复杂度都是O(nlogn),默认排序方式是升序排序,可以通过指定reverse=True进行降序排序,可以通过指定key参数来指定排序的关键字。

_x000D_
tags: python教程
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT