==基础==
- # 注释
- 转义: \' \" \t TAB \n 换行 \\表示\ r' 不转义
- None 空值
- 常量 全大写
- sys.exit()提前结束整个程序
- \ 代码换行
- .copy() 复制
- .deepcopy() 复制,包括内层的list等
==数学操作符==
- = 等于
- % 余数
- // 整除
- ** 乘方
- += 自加
==字符串操作==
==赋值==
- = 赋值
- 变量名区分大小写,不能数字开头
- 赋值(assignment)也叫作绑定 binding
- python是按引用传递的
- 判断这个变量是不是INT
- isinstance(a,(int,float))
==基础函数==
- len('abc')
- ord('A') 65
- chr(65) 中
- b'ABC' 存储为bytes
- '中文'.encode('utf-8') #编码成字节包
- decode('utf-8') #解码成字符串
- obj.some_method(x,y,z)
- str(),int(),float()
- print()
- input()
==文件头==
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
==数据类型==
- %s 字符串
- %d 整数
- %f 浮点数
- %x 16进制整数
- Boolean True,False
- 其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
- '%2d-%02d' % (3, 1)--->'3-01'
- '%.2f' % 3.1415926--->'3.14'
- 用%%来表示一个%
==比较与布尔操作符==
- ==,!=,<,>,>=,<=
- and,or,not
- a^b: 异或: a为true,b不为 或者 b为true,a不为
- a is b :指向同一个对象为true
==条件和循环==
- ==记得加冒号:==
- 条件
- if,elif,else
- if x 等价 if x=1
- 循环
- for name in names
- for x in range(10)
- while
- break
- continue
==列表list==
- 序号从0开始
- classmate=['a','b','c']
- x,y,z=classmate
- classmate[0] 第0个
- classmate[-1] 倒数第1个
- .append('x') 加在最后
- .insert(i,'x') 加在第i个之前 默认加在最后
- .pop(x) 删除第i个值
- .remove(x) 删除为x的值
- .index(x) 返回x的序号
- .sort() 排序
- key=length 按字符串长度排序
- reverse=True 从大到小
- .reverse() 逆序
- range(5),py2是列表,py3是range
- list(range(5)) py3创建列表
- in/not in 判断元素是否在列表里
- 字符串可看作每个字母都是单独元素的列表,但是是不可变的
- 切片
- [开始索引:结束索引:步长]
- 算头不算尾
- 切片是copy
- 直接赋值是视图
- 列表生成式/生成器
- [x * x for x in range(1, 11)]
- [x * x for x in range(1, 11) if x % 2 == 0]
- [m + n for m in 'ABC' for n in 'XYZ']
- []换成()会生成生成器(generator),一边循环一边计算的机制
- enumerate
- 可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
- for i, value in enumerate(['A', 'B', 'C']):
==字符串==
- .upper()
- .lower()
- .isupper()
- .islower()
- .isalpha() 只有字母
- .isalnum() 只有数字和字母
- .isdecimal() 只有数字
- .isspace() 只有空格等
- .istitle() 是否大写字母开头的字母
- .startwith()
- .endwith()
- .join()
- .split() 返回列表
- .rjust()/ljust()/center() 用空格让字符串对齐
- .strip()/lstrip()/rstrip() 删除空格
- .replace(a,b) 把a变成b,但是不改变原字符串
==字符串格式化==
'字符串格式化-%s' % ('字符串')
'字符串格式化-%d' % (123)
'字符串格式化-%f' % (1.23)
'字符串格式化-{:s}'.format('字符串')
'字符串格式化-{:d}'.format(123)
'字符串格式化-{:f}'.format(1.23)
'字符串格式化-{}'.format(字符串,整数,数组...)
-
使用索引
'{2}{1}{0}'.format('a','b','c')
# >>> 'cba'
'{0[0]}{1[1]}{1[2]}'.format([1,2,3],[4,5,6])
# >>> '156'
-
使用位置参数
'{}{}{}'.format(*[1,2,3])
# >>> '123'
-
使用关键字参数
'{a}{b}'.format(a='test',b=123)
# >>> 'test123'
'{a}{b}'.format(**{'a':'test','b':123})
# >>> 'test123'
-
填充
'{0:*>10}'.format('test')
# >>> '******test'
'{0:*<10}'.format('test')
# >>> 'test******'
'{0:*^10}'.format('test')
# >>> '***test***'
-
进制与精确度
>>> '{0:.2f}'.format(1/3) #两位小数
'0.33'
>>> '{0:b}'.format(10) #二进制
'1010'
>>> '{0:o}'.format(10) #八进制
'12'
>>> '{0:x}'.format(10) #16进制
'a'
>>> '{:,}'.format(12369132698) #千分位格式化
'12,369,132,698'
==元组tuple==
- 值不可修改的list
- t=(1,2,3)
- t=(1,) 单个元素加逗号才是元组
==集合==
- set('hellow')
- set([1,2,3,4])
- s.add()
- s.remove()
- set是无序不重复集合 可作集合运算
- S1.intersection(S2)
- S1&S2
- S1.union(S2)
- S1|S2
- S1.difference(S2)
- S1-S2
- S1.symmetric_difference(S2)
- S1^S2
- S1.issubset(S2)
- S1.issuperset(S2)
- S1.isdisjoint(S2)
- sorted(set('fqwegjerggjiegjirthjth'))
- zip 和 unzip
- 配对成高维 和 行转列
==字典==
- {'ay':12,'bob':23,'comm':34}
- d[key]
- 例子:
- dict(zip(range(100),a))
- key0到99,value是a的字典
- 默认情况下,dict迭代的是key。
- 如果要迭代value,可以用for value in d.values()
- 如果要同时迭代key和value,可以用for k, v in d.items()
- 由于字符串也是可迭代对象,因此,也可以作用于for循环
- .keys()
- .values()
- .items()
- .get(key,default value) 返回key对应的值,如无则返回默认值
- .setdefault() 设置无key时的默认值