欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 排序问题

程序员文章站 2024-03-22 19:33:58
...

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

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]