Python - Day6

2017-10-01  本文已影响11人  姚屹晨

廖雪峰

1.关键字参数

①可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装成一个tuple;而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict

key_parameter.png
2.命名关键字参数

①有什么用?

没加参数名.png 正确的命名关键字参数.png 关键字不能是表达式.png

②命名关键字参数可以有缺省值(默认值),从而简化调用:

命名关键字参数可以设置默认值从而简化调用.png

③如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不需要一个特殊分隔符*(asterisk)

可选参数和关键字参数的组合可以省略一个asterisk.png
3.参数组合

①有哪几种参数?

②参数定义的顺序?

必选参数默认参数.png

③神奇的tupledict

神奇的tuple和dict会自动补充.png
4.小结

①默认参数一定要用不可变对象!

②注意可变参数和关键字参数的语句:

*args是可变参数,args接收的是一个tuple;
**kw是关键字canshu,kw接收的是一个dict。

③调用函数时,如何传入可变参数和关键字参数的语法?

5.递归函数

①是什么?

②如何解决栈溢出?

③什么是尾递归优化?

尾递归.png
6.Hanoi
hanoi.png
7.切片

① 存在的原因?

[]for ... in + rangeslice

slice.png

③支持倒数切片

slice中可为负值.png

④slice各种操作

slice一波操作.png

tuple也是一种list,唯一区别是tuple不可变。因此tuple也可以进行切片操作,操作的结果仍是tuple

对tuple进行切片.png

⑥字符串也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以使用切片操作,操作结果仍是字符串。

字符串也可以进行切片操作.png
8.迭代

①是什么?

迭代list.png

②只要是可迭代对象,无论有无下标,都可以迭代,比如dictset

使用forIn迭代字典.png set可是可迭代对象.png 两种获得dict中value的方式.png

③如果我要同时迭代keyvalue怎么办?

同时输出dict中的key和value.png

④由于字符串也是可迭代对象,因此,也可作用域for循环

迭代字符串.png

⑤如何判断一个对象是可迭代对象?

如何判断一个对象是可迭代对象.png

Python内置的enumerate()函数可以把一个list变成索引-元素对。

list的索引元素对.png
9.列表生成式(list comprehensions)

①是什么?

②如果你要生成一个list[1,2,3,4,5]

range生成list.png

③如何生成[1,4,9,16,25]

将list内部的每个元素求平方.png

④简洁的方法:

使用列表生成式.png

⑤还可以对输出的数据进行筛选,比如获取偶数

筛选出偶数.png

⑥还是使用两层循环,生成全排列

两个for循环的组合成全排列.png

for循环可以同时使用两个甚至更多变量。

for循环可以同时使用两个甚至更多个变量.png

⑧使用列表生成式简化

列表生成式使用两个变量.png

⑨把一个list中所有字符变成大/小写

把一个list中的所有字符串都变成大小写.png

⑩如果一个list中既有字符串,也包含整数,如何将其中的字符串全部转换成小写格式。

解法1.png 解法2.png
10.生成器(Generator)

①存在的原因?

②如何创建一个生成器?

list和generator的区别.png

③如何打印generator中的数据。

打印生成器中的数据.png

④如果没有更多的元素时,抛出StopIteration的错误。

stopIteration.png

⑤注意generator也是可迭代对象喔:

generate对象是可迭代对象.png

⑥既然是可迭代对象,也就可以用for循环

既然是可迭代对象就可以使用for循环.png
11.fib
fib.png

①用for循环遍历generator函数存在一个问题:

获取generator中的return数据.png
12.生成器之杨辉三角形 range(len(L)) + 列表生成式 的强大力量
杨辉三角形.png
上一篇 下一篇

猜你喜欢

热点阅读