python 学习笔记7 2018-4-14

习题讲解:

可以看到函数正常调用的是时候,结果没有问题,当时当使用默默参数的时候 第二个结果不是我们想要得到的

原因解释如下:

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

定义默认参数要牢记一点:默认参数必须指向不变对象!

要修改上面的例子,我们可以用None这个不变对象来实现:

高阶函数

Python内建了map()

(1)map()函数

map()传入的第一个参数是f,即函数对象本身。由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list。


(2)sorted排序

排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来

Python内置的sorted()函数就可以对list进行排序:

它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:

key排序结果:1,9,16,25

默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' < 'a',结果,大写字母Z会排在小写字母a的前面

我们给sorted传入key函数,即可实现忽略大小写的排序:

要进行反向排序,不必改动key函数,可以传入第三个参数reverse=True:

对字典进行排序:


排序结果是对key排序,而不是value

所以我们应该传进入去的是 m.items()

或者我们采用key 方法

你可能感兴趣的:(python 学习笔记7 2018-4-14)