程序员

python3 排序sorted的用法

2018-09-28  本文已影响3人  _AlphaBaby_

在以前学c/c++的时候更多的是给数组用快速排序,堆排序的,但是数组是一个结构很简单的序列,这种简单的序列用python怎么排序呢

example_list = [5, 0, 6, 1, 2, 7, 3, 4]
example_list.sort()
print(example_list)
图一
但是sort() 函数只是对间的系列进行排序

在很多时候我们都像给一些非list的可迭代对象进行排序,这里我们就要用到sorted()函数了

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
函数原型
`sorted(iterable, key=None, reverse=False)
参数解读


使用sorted排序的时候常常会使用到lambda,所以我们先认识学习下lambda

def func1(x):
    return x+2


f = lambda x: x+2

print(func1(2))
print(f(2))

以上带大运行的结果都是4, 重一个函数的角度来看lambda x: x+2和函数func1的功能是一样的,所以lambda表达式是可以看成一个不能实现复杂逻辑功能的函数

def action(x):
    return lambda y:x+y


print(action(1)(2))

ret = action(1)
print(ret(2))

以上代码的运行结果都是3,我们分析一下action函数:

  1. 首先action函数有个参数是x
  2. 返回值是一个lambda表达式
  3. 结合上一个代码分析,返回的是个函数
    结合以上分析,可知道执行action(1) 得到的是一个函数ret, 然后我们可以继续执行ret(2),执行ret(2)就想到于执行了lambda表达式

同理我们可以写出这样的表达式

f = lambda x: lambda y: x+y

print(f(1)(2))

sorted用法

先看代码

array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"], reverse=False)
print(array)

运行结果是:
[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
我使用的例子是一个典型的json数据,同时我们常常对json的数据格式进行排序
其中lambda x:x["age"]表达式的作用的把每个list中的每个字典取出来然后在用dist中的age字段进行排序

上一篇下一篇

猜你喜欢

热点阅读