print(math.gamma(n)) # 求 (n-1) 的阶乘
数值, 数值计算
-
format(50, “b”) == bin(50)[2:], 这个“b” 就代表的是 binary
format(14, ‘b’) ------> ‘1110’ 去除 0b -
去掉前导零
str(000001) # 只适合python2.x ‘1’
“00000001”.lstrip(“0”) # python3中的正确方法。 -
random.uniform(5, 10), 返回一个 5-10之间的随机浮点数。
-
x=y=z=10,链式赋值是可行的,而且简洁。
-
nums=1,2,3, x,y,z=nums,这个叫做序列解包
-
整数和浮点数在计算机内部存储的方式不同,整数运算永远是精确的,
而浮点数运算可能会有四舍五入的误差.
ord() 返回对应的 ASCII 数值,或者 Unicode 数值
chr() 用一个整数作参数,返回一个对应的字符。
int(‘0101011010110’, 2) binary—int
int(‘776f726c64’, 16) hex—int
bytes(string, ‘utf-8’) ------>bytes_string
print(some_str.center(40, "*"))
写注释很有用- divmod(a, b) 返回一个包含商和余数的元组(a // b, a % b)
- pow(3, 2) = 32 pow(3, 2, 2) = 32 % 2
字符串
- f’{a_task:.2f}', 2位小数来表示浮点数
field *= 2
,增量赋值,也可以用于字符串。
在python3里,有几点关于编码的常识
- 字符就是unicode字符,字符串就是unicode字符数组
- 1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
- 不同的解释器环境下,print() 函数的输出结果会有所不同。
比如 git-bash, 无法正确显示 gbk 编码的中文。
列表
-
nums[::2] 每隔2步取一个值。写法很好啊。
-
生成5个空列表:
正确的方法 ret = [[] for _ in range(5)]
错误的方法 ret = [[]] * 5
错误的原因在于,如果 ret[0].append(5),会出现:
[[5], [5], [5], [5], [5]] -
strs = [“flower”,“flow”,“flight”]
print(*strs), 就是把strs,解包为一个元组。
输出: flower flow flight -
[1,2,3] * 2 ----> [1, 2, 3, 1, 2, 3]
-
[1,2] + [3,4] ----> [1,2, 3, 4]
-
奇数偶数分开排序的一种很好的写法。
sorted(A, key=lambda x: 0 if x % 2 == 0 else 1) -
python3中 str.index(sub_string), 速度更快一些,比起 str.find(sub_string)
-
生成 m*n 个为 0的矩阵。
正确: matrix = [[0 for j in range(m)] for i in range(n)]
错误: matrix = [[0] * m] * n
本质上因为python里面存放的是 对象的引用
元组
- 元组可以使用下标索引来访问元组中的值
集合 set():
- 往set对象里add列表、集合对象时,时提示他们是不可hash的,而对于tuple类型就可以。
原因:set里面的对象是hash存储(所以是无序的),对于python万物都是对象,如果存储一个list对象,而后改变了list对象,那set中刚才存储的值的hash就变了。
结论:set是hash存储,必须存储不变的对象,例如字符串、数字、元组等。 - set().update([]), 批量添加元素。
- set.intersection(set1, set2 … etc) ,
用于返回两个或更多集合中都包含的元素,即交集。
这里set1, 也可以是任何序列。
如果是字典,则比较字典的 键。
字典
- 字典也可以pop()!!!
- 获取一个字典所有的键,直接用list()来转换
d = {‘id’:7, ‘name’:‘Shiba’, ‘color’:‘brown’, ‘speed’:‘very slow’}
print(list(d))
列表操作
print([1] * 3) # [1, 1, 1]
print([1, 2, 3] + [4, 5]) # [1, 2, 3, 4, 5]
集合 set 简洁操作
print({1, 2, 3} - {1} ) # {2, 3}, 支持减法,不支持加法。
import math
print(math.log2(8)) # 3.0
print(math.log(8, 2)) # 3.0
print(math.log(5, 2)) # 2.321928094887362