python cookbook笔记[1.1-1.53]
list加减乘除 & 元组比较大小
1. list直接加减乘除
+
list加list,把两个list中的元素合并为一个list
1 | list1 = [1, 2, 3] |
-
不支持此操作
1 | list1 = [4, 3, 2] |
*
列表乘int,每个元素重复扩充
1 | list1 = [4, 3, 2] |
/
不支持此操作
1 | list1 = [4, 3, 2] |
2. list元素加减乘除
元素加减乘除,举例+
,-
*
/
同理
1 | list1 = [4, 3, 2] |
3. [list].apend([list])和[list].extend([list])
append()
这种方法的参数是一个单个元素或者一个整体,该方法没有返回值
1 | list1 = [1, 2, 3] |
extend()
用法同append()
,结果同+
1 | list1 = [1, 2, 3] |
4. 通过某个key值对列表(字典)排序
1 | list = [(1, 0), (2, 3), (3, 2), (4, -1)] |
5.lambda函数
- 直接调用
1 | a = (lambda x: x + 1)(1) # 第一对括号改变优先级,第二队括号表示函数调用参数1(int) |
- 默认参数
1 | a = (lambda x, y=1: x+y)(1) # 支持常规函数参数写法 |
注意事项:
lambda不创建接收变量(def创建的方法是有函数名,而lambda没有函数名)
lambda只是一个表达式,不能包含命令(def是一个语句,lambda可以不同于def 出现在列表常量或函数调用参数中)
1
2
3f = lambda x : x+1
num = [f(x) for x in range(10)]
print num自动返回结果(返回表达式中最后一个表达式的值)
可以直接作为python 列表或python 字典的成员
不可嵌套(if、for、print等语句不能用于lambda中)
不可重用(不能共享给别的程序调用,即import [模块].[方法] 无效)
如果
for..in..if
能做的,不要选择lambda1
num+=1 for x in listx if x>=0
lambda函数拥有自己的命名空间,不能访问自有参数列表之外或全局命名空间里的参数
参数列表不需要用括号
冒号不是用来开始新语句块的
并不会带来程序运行效率的提高,只会使代码更简洁(不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率)
只能写在一行上,也有人也叫他单行函数
6.tuple的大小比较
1 | print((2, 4) > (3, -1)) # False |
两个tuple大小比较方法是 从第一个位置开始逐个进行比较,
如果不等,当前比较结果就是整个tuple的比较结果
如果相等,继续下一个位置的比较,
最后,元素多的元组更大:1
print((2, 4, -6) > (2, 4)) # True