python 排序问题

这篇博客介绍了Python中处理排序问题的常见方法,包括列表从小到大或从大到大的排序,元素反转以及列表去重。使用`list.sort()`和`sorted(list)`进行排序,`reversed(list)`实现元素反转,`set(list)`用于去重。文章还提醒读者注意`list.sort()`方法会直接修改原列表,并提供了更多排序用法的参考资料链接。
部署运行你感兴趣的模型镜像

在排序问题中,常见的就是下面几类:

1、从小到大 或  从大到小

2、元素反转

3、列表元素去重。

下面分别来看在python中如何实现:

一、从小到大 或  从大到小

可以使用的函数:list.sort()  、 sorted(list) 两个函数。区别如下:

a、list.sort()方法来排序,此时list本身将被修改。通常此方法不如sorted()方便,但是如果你不需要保留原来的list,此方法将更有效。

b、list.sort()方法仅被定义在list中,相反地sorted()方法对所有的可迭代序列都有效。

1、使用sorted(list)排序

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# 排序操作:
# 1.1 从小到大
list1_1 = sorted(list0)
print('原列表:\n',list0)
print('sorted()从小到大:\n',list1_1)

# 1.2 从大到小
list1_2 = sorted(list0,reverse=True)
#list1_2.sort(reverse=True)
print('原列表:\n',list0)
print('sorted()从大到小:\n',list1_2) 

运行结果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sorted()从小到大:
 [1, 1, 2, 2, 4, 4, 5, 6, 7, 7, 9, 44]

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sorted()从大到小:
 [44, 9, 7, 7, 6, 5, 4, 4, 2, 2, 1, 1]

2、使用 list.sort() 排序

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# 排序操作:
# 1.1 从小到大
list1_1 = list0[:]
list1_1.sort()
print('原列表:\n',list0)
print('sort()从小到大:\n',list1_1)

# 1.2 从大到小
list1_2 = list0[:]
list1_2.sort(reverse=True)
#list1_2.sort(reverse=True)
print('原列表:\n',list0)
print('sort()且从大到小:\n',list1_2) 

运行结果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sort()从小到大:
 [1, 1, 2, 2, 4, 4, 5, 6, 7, 7, 9, 44]

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
sort()且从大到小:
 [44, 9, 7, 7, 6, 5, 4, 4, 2, 2, 1, 1]

二、反转排序

使用 reversed(list) 函数来实现,但是一定要注意,要使用  list(reversed(list_name)) 的形式才能输出 列表

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# reversed 必须跟 list一起用,输出的结果才是列表
list1_3 = list(reversed(list0))  
print('原列表:\n',list0)
print('list(reversed())操作之后:\n',list1_3) 

运行结果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
list(reversed())操作之后:
 [1, 7, 44, 6, 4, 2, 9, 7, 5, 4, 2, 1]

三、列表去重

用到  set(list) 函数

list0 = [1,2,4,5,7,9,2,4,6,44,7,1]

# set 必须跟 list一起用,输出的结果才是列表
list2 = list(set(list0))       # 改变了列表顺序的去重方法
list2_1 = sorted(set(list0),key=list0.index)  # 不改变列表顺序的去重方法
print('原列表:\n',list0)
print('list(set())操作之后(改变列表元素顺序):\n',list2)
print('list(set())操作之后(不改变列表元素顺序):\n',list2_1) 

运行结果:

原列表:
 [1, 2, 4, 5, 7, 9, 2, 4, 6, 44, 7, 1]
list(set())操作之后(改变列表元素顺序):
 [1, 2, 4, 5, 6, 7, 9, 44]
list(set())操作之后(不改变列表元素顺序):
 [1, 2, 4, 5, 7, 9, 6, 44]

注意:list.sort()还有很多用法,可以参考 

https://www.runoob.com/python/att-list-sort.html

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python中,可以通过多种方式实现排序算法。常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。以下将展示几种常用排序算法的Python实现,并介绍Python内置的排序方法。 ### 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它复地遍历要排序的列表,比较相邻的两个元素,并交换它们的位置,直到整个列表排序完成。 ```python def bubble_sort(arr): n = len(arr) for i in range(n): # 最后一轮可以少比较一次 for j in range(0, n - i - 1): if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] return arr ``` ### 插入排序(Insertion Sort) 插入排序通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 ```python def insertion_sort(arr): for i in range(1, len(arr)): key = arr[i] j = i - 1 while j >= 0 and key < arr[j]: arr[j + 1] = arr[j] j -= 1 arr[j + 1] = key return arr ``` ### 快速排序(Quick Sort) 快速排序采用分治策略,通过一个基准将数据分成两部分,一部分小于基准一部分大于基准,然后递归地对这两部分进行快速排序。 ```python def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[len(arr) // 2] left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot] return quick_sort(left) + middle + quick_sort(right) ``` ### 归并排序(Merge Sort) 归并排序也是一种分治策略的排序算法,它将数组分成两半,分别排序后合并成一个有序的数组。 ```python def merge_sort(arr): if len(arr) <= 1: return arr mid = len(arr) // 2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left, right) def merge(left, right): result = [] i = j = 0 while i < len(left) and j < len(right): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 result.extend(left[i:]) result.extend(right[j:]) return result ``` ### Python内置排序方法 Python 提供了高效的排序方法 `sorted()` 和 `list.sort()`,它们基于 Timsort 算法,结合了归并排序和插入排序的优点,适用于大多数实际数据排序场景。 ```python # 使用 sorted() 返回一个新的排序列表 sorted_list = sorted([5, 3, 8, 6]) # 使用 list.sort() 原地排序 arr = [5, 3, 8, 6] arr.sort() ``` 这些排序算法各有优劣,适用于不同场景。例如,快速排序在平均情况下性能优异,但最坏情况下效率较低;而归并排序在最坏情况下仍保持稳定性能,但需要额外的空间;冒泡排序虽然简单,但效率较低,通常不推荐用于大规模数据排序
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值