在排序问题中,常见的就是下面几类:
下面分别来看在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]