Python中有2个排序函数(list内置的sort()方法,全局的sorted()方法)
sorted(iterable,key=None,reverse=False)
#返回排好序的新列表,不改变对象本身,默认升序;reverse:-True降序 -False 正序对所有可迭代的对象均有效list.sort(key=None,reverse=False)
#将list自身进行排序,不返回新的list对象,默认升序;reverse:-True降序 -False 正序
1)list.sort()
排序
/// [[3, 5, 8], [5, 3, 6], [7, 2, 1]] |
2)sorted()
排序
// [[7, 2, 1], [5, 3, 6], [3, 5, 8]] |
|
以tuple作为list的元素时原理相同
不区分大小写时将其他基本元素中的元素都转换为大写,或小写,默认按元素顺序依次排序,区分大小写,按ASCII码顺序排序。
1 2 3 4 5 |
|
以dict作为list的元素,下标号换为字名
这个list里的元素是dict形式,每个dict都存有姓名和升高现在想要以升高进行升序排列:
1 2 3 4 5 6 7 |
|
将list排序,输出排序后对应原来的下标:
1):
# 原数据
a = [5, 8, 2, 1, 7]
b = [(a[x], x) for x in range(len(a))]
b.sort(key=lambda x: x[0])
c = [x[1] for x in b]
d = [x[0] for x in b]
# c为排序排序后对应原来的下标
print(c)
# d为排序后的数据
print(d)
输出结果:
[3, 2, 0, 4, 1]
[1, 2, 5, 7, 8]
2):
a = [5, 8, 2, 1, 7]
b = sorted(enumerate(a), key=lambda x: x[1])
c = [x[0] for x in b]
d = [x[1] for x in b]
# c为排序排序后对应原来的下标
print(c)
# d为排序后的数据
print(d)
输出结果:
[3, 2, 0, 4, 1]
[1, 2, 5, 7, 8]