list:
Pytho内置的数据类型列表,list是一种可变有序集合,可以随时添加和删除其中的元素.可添加元素到末尾.
|
|
也可以指定索引号,添加到指定位置,
|
|
删除元素: pop()方法 删除末尾元素,也可指定索引删除指定位置pop(i)
tuple
另外一种有序列表,元组,和list非常相似,但tuple一旦初始化,就不能更改,
代码更安全,能用tuple替代list,就替换掉,
定义一个元素时,例子:
|
|
条件判断
|
|
循环
|
|
range()函数:整数序列,包前不包后,range(5) 表示(0,1,2,3,4)
要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,上面的两个例子,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句。
有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用Ctrl+C退出程序,或者强制结束Python进程。
dict
Python 内置的词典,极快的查找速度,原因 dict通过索引查找
一个Key对应一个value,如果有多个,后面的话替换掉前面的
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
需要牢记的第一条就是dict的key必须是不可变对象。
set
一组key的集合,不存储value,在set中没有重复的key,无序的无重复的集合
重复元素自动过滤,
add(key)添加元素,remove(key)删除元素
函数
定义函数时,需要确定函数名和参数个数;
如果有必要,可以先对参数的数据类型做检查;
函数体内部可以用return随时返回函数结果;
函数执行完毕也没有return语句时,自动return None。
函数可以同时返回多个值,但其实就是一个tuple。
Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。
使用args和*kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。
切片:
|
|
前十个数,取法
|
|
L[开始位置:结束位置:间隔数],包含开始,不包含结束,每隔 间隔数 取数值
从10开始,每隔5取一个数,到90(不包含90)结束.
|
|
|
|
|
|
|
|
map()和reduce().重点
map()函数接收两个参数,一个函数,一个Iterable, map()把函数作用在序列的每个元素上
例如:
代码如下:
|
|
reduce的用法:
reduce把一个函数作用在一个序列[x1, x2, x3, …]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方说对一个序列求和,就可以用reduce实现:
|
|
filter()
过滤函数,和map()类似,接收两个函数,一个函数,一个序列,把传入的函数作用于每个元素,返回的是True 或 False,根据返回值判断是否保留元素.
例如,在一个list中,删掉偶数,只保留奇数,可以这么写:
|
|
把一个序列中的空字符串删掉,可以这么写:
|
|
装饰器
详细解释:网址
偏函数
functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:
|
|