区别对待可变对象和不可变对象
数字、字符串、元组属于不可变对象,字典以及列表、字节数组属于可变对象。
|
|
由于init()函数的第二个参数是个默认参数,默认参数在函数被调用的时候仅仅被评估一次,以后都会使用第 一次评估的结果,因此实际上对象空间里面course所指向的是list的地址,每次操作的实际上是list所指向的具体列表。
|
|
对于可变对象,还有一个问题是需要注意的。
|
|
[],()和{}:一致的容器初始化形式
列表解析的语法为:[expr for iter item in iterable if cond expr]
|
|
除了列表可以使用列表解析的语法之外,其他几种内罝的数据结构也支持
|
|
字典
字典迭代使用
|
|
列表
使用enumerate()获取序列迭代的索引和值
|
|
filter、map、reduce、lambda
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象
|
|
filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:
|
|
map(function, sequence) :对sequence中的item依次执行function(item),见执行结果组成一个List返回:
|
|
reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
|
|