python 排序问题

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

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

 

 

 

你可能感兴趣的:(python,python学习)