-
python是脚本语言
-
IDLE是一个python shell,shell的意思就是外壳,也就是起互动作用的框
-
BIF–>Built-in Functions 内置函数
-
ctrl + c强制结束程序
-
and:两边含0,则返回0;均非0时则返回后一个非0值
-
or:至少有一个非0时,返回第一个非0
-
短路逻辑:x and y 同时为真时,结果为真,当x为假时,不会再去求y的值,直接返回false;or相同
-
print(“xx”, end=" “)
print() 默认是打印完字符串会自动添加一个换行符,end=” "会使print用空格代替换行 -
int()将小数换成整数,结果向下取整
使得int()按照”四舍五入“的方式取整, int(5.4+0.5)=5, int(5.6+0.5)=6,不管如何,给原数加上0.5 -
判断输入的是否是数字
temp = input(); while not temp.isdigit():… -
a<b<c = (a<b)and(b<c)
-
not or and 的优先级为 not>and>or
-
元组拆包:想要将元组类型的表达式赋值给变量,python会对等号右边的值进行拆包。
)1.将三个变量的值快速相互交换a = 1 b = 2 c = 3 a, b, c = b, a, c print(a,b,c)
)2.遍历元组或列表组成的序列
seq = [(1, 2, 3),(4, 5, 6),(7, 8, 9)] for a,b,c in seq: print('a={0},b={1},c={2}'.format(a,b,c))
)3.从函数返回多个值
-
三元操作符: 语句1 if 条件表达式 else 语句2
对条件表达式进行判断,如果判断结果为真,则执行语句1,并返回执行结果。
如果判断结果为假,则执行语句2.等同于 if 条件:
语句一
else: 语句二
-
所有多对象,逗号分隔,未明确用符号定义的几个默认的类型都是元组
-
“鸭子类型”:一个东西走起来像鸭子,叫起来像鸭子,那它就是鸭子。
-
在字符串前面加前缀符号r, 表明这些字符都是原生字符。r=raw
-
encode, decode
-
pass在python中就是什么都不做的语句
-
tuple 函数将任意的序列或者迭代器转变为元组
tuple–元组a = tuple([1,2,3]) print(a) (1, 2, 3)
-
利用 * 可以接收到多个值
values = [1 ,2 ,3 ,4]
a,*b = values
print(b)
b = [2, 3, 4]
-
与字典、集合相比,检查列表中是否含有一个值是非常缓慢的,这是因为python在列表中进行了线性逐个扫描,而字典和集合中中python是同时检查所有的元素(基于哈希表)
-
bisect–平分
bisect模块实现了二分搜索和已排序列表的插值
bisect.bisect(a,num)会找到num应当被插入的地方
bisect.insort(a,num)会将num插入到a中相应的地方
-
切片
)1.负索引可以从序列的尾部进行索引:
values = [1 ,2 ,3 ,4] print(values[-1:]) [4]
)2.需要对列表或元组进行翻转的时候,可以给步长传值-1
values = [1 ,2 ,3 ,4] print(values[::-1]) [4, 3, 2, 1]
-
enumerate–列举;枚举
当需要对数据添加索引的时候,可以使用enumerate构建一个字典,将序列值映射到索引位置上
list = ['a', 'b', 'c'] mapping = { } for k,v in enumerate(list): mapping[v]=k print(mapping) { 'a': 0, 'b': 1, 'c': 2}
-
zip–拉链;精力;活力
zip将列表,元组或其他序列的元素配对,新建一个元组组成的列表,生成的列表长度由最短序列决定。
lis1 = ['a', 'b', 'c'] lis2 = [1, 2, 3, 4] l = list(zip(lis1,lis2)) print(l) [('a', 1), ('b', 2), ('c', 3)]
)1.zip可以用来同时遍历多个序列
lis1 = ['a', 'b', 'c'] lis2 = [1, 2, 3, 4] for i,(k,v) in enumerate(zip(lis1,lis2)): print('{0}:{1},{2}'.format(i,k,v)) 0:a,1 1:b,2 2:c,3
)2.拆分序列
lis1 = ['a', 'b', 'c'] lis2 = [1, 2, 3, 4] l = list(zip(lis1,lis2)) a,b = zip(*l) print(a) print(b) a=('a', 'b', 'c') b=(1, 2, 3)
-
字典:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
)1.keys和values方法提供了字典键值的迭代器。)2.字典A.update(字典B)
将两个字典合并,对于字典A已经存在的键,如果字典B也含有相同的键,A中的值会被覆盖。
)3.字典本质上是含有2个元素的元组的集合,字典是可以接受一个2个元素元组的列表作为参数的。
mapping = dict(zip(range(5),reversed(range(5)))) print(mapping)
)4.字典的get()和pop方法可以返回一个默认值
value = Adict.get(key,default_value) get方法会在key参数不是字典的键的时候返回defaul_value,默认为None
)5.将字词组成的列表根据首字母分类成包含列表的字典:
1. w = ['apple', 'bat', 'bar', 'atom', 'book','zxw'] z = { } for ww in w: www = ww[0] if www in z: z[www].append(ww) else: z[www] =[ww] print(z) 2.setdefault(键,默认值):如果键不存在于字典中,将会添加键并将值设为默认值。 w = ['apple', 'bat', 'bar', 'atom', 'book','zxw'] z = { } for ww in w: www = ww[0] z.setdefault(www,[]).append(ww) print(z) 3.collections模块中的defaultdict用来生成符合要求的字典。 defaultdict(list):当字典中的key值不存在但被查找时,返回一个空列表 defaultdict(str):当字典中的key值不存在但被查找时,返回一个空字符串 defaultdict(int):当字典中的key值不存在但被查找时,返回0 from collections import defaultdict w = ['apple', 'bat', 'bar', 'atom', 'book','zxw'] z = defaultdict(list) for ww in w: z[ww[0]].append(ww) print(z)
)6.字典的键必须是不可变的对象。
-
集合:无序且元素唯一(通过set()函数或者{}的方式创建)
其中的一些方法和数学学的集合差不多,并差交补
-
列表解析[],字典解析{},集合解析{}
列表解析:list = [expr for val in collection if condition]
字典解析:dict = {key for val in collection if condition}
集合解析:set = {expr for val in collection if condition}
-
嵌套列表推导式–其实就是多层for循环,for循环的部分是根据嵌套的顺序排列的,所有的过滤条件放在尾部。
result = [name for names 。in alldate for name in names if name.count(‘a’)>=2]
-
python达到尾部仍然没有遇到return语句时,就会返回None
-
python的函数是对象。
)1.函数可以当做参数传递,作返回值
def express(): return '嗨' def fun(a): return a a = fun(express()) print(a)
)2.函数可以当作容器类型的元素
def express(): return '嗨' li = [express(), '!'] for val in li: print(val)
-
map(function, list):第一个参数 function参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
li = list(map(lambda x:x**2, [1 , 2, 3, 4])) for i in li: print(i)
-
柯里化:部分参数应用
def add_number(x, y): return x+y add_five = lambda y:add_number(5,y) print(add_five(1))
-
生成器–yield关键字
-
将多个异常类型写成元组的形式可同时捕获多个异常
try: pass except(TypeError,ValueError): pass
-
函数文档–可以了解函数是干嘛的,方便别人,方便自己
def gcd(x, y): "求最大公约数" while y: t = x % y x = y y = t return x 法1:print(gcd.__doc__) 法2:help(gcd)
-
在函数中修改全局变量的值,用关键字global
-
在嵌套的函数中修改外部函数的局部变量,用关键字nonlocal
def fun(var): var = 1314 def fun1(): nonlocal var var = str(var) + '520' return var return fun1() print(fun(var))
-
如何访问内部函数
情况1: def fun(var): var = 1314 def fun1(): nonlocal var var = str(var) + '520' return var return fun1 var = 520 print(fun(var)()) 情况2: def fun(var): var = 1314 def fun1(): nonlocal var var = str(var) + '520' return var return fun1() print(fun(var))
-
filter()和lambda表达式结合
filter(过滤条件,被过滤的对象) print(list(filter(lambda x:not(x%3), range(1,100)))) [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
-
map()和lambda表达式结合–map后面可以跟多个序列作为参数的
print(list(map(lambda x,y:[x,y],[1,3,5,7,9],[2,4,6,8,10]))) [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]