思维之海

——在云端,寻找我的星匙。

Python学习手册

主要选取Python中实用性最大的部分,浅尝辄止。

网络工具综合学习网站:Runoob

References

Python 中文学习大本营

Python Cookbook

Python yield 使用浅析

STL4Python3

算法比赛时,计算量小的模拟题,可以尝试利用Python。

数据转换

函数 功能
int(a, base) 从base进制(可选)转为整型/10进制(可以处理2~36进制的字符串)
bin(a) / oct(a) / hex(a) 转为2/8/16进制的字符串(去前缀print(a[2:])
float(a) 转为浮点型;失败抛出ValueError
str(a) 转为字符串
set(L) 转为集合
type(a) 查看元素类型
'ABC'.join(s_list) 列表转为字符串,分隔符为ABC
list(STR) 将字符串转为列表;分字
STR.split("ABC") 将字符串转为列表;分隔符为ABC
ord(c) / chr(i) 字符转ASCII 数值 / ASCII 数值转字符

常用类型:intfloatstrlistset

数据格式化输出

整数格式化

%o —— oct 八进制
%d —— dec 十进制
%x —— hex 十六进制

1
2
3
4
5
6
>>> print('%o' % 20)
24
>>> print('%d' % 20)
20
>>> print('%x' % 20)
14

浮点格式化

%f ——保留小数点后面六位有效数字
  %.3f,保留3位小数位
%e ——保留小数点后面六位有效数字,指数形式输出
  %.3e,保留3位小数位,使用科学计数法
%g ——在保证六位有效数字的前提下,使用小数方式,否则使用科学计数法
  %.3g,保留3位有效数字,使用小数或科学计数法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> print('%f' % 1.11)  # 默认保留6位小数
1.110000
>>> print('%.1f' % 1.11) # 取1位小数
1.1
>>> print('%e' % 1.11) # 默认6位小数,用科学计数法
1.110000e+00
>>> print('%.3e' % 1.11) # 取3位小数,用科学计数法
1.110e+00
>>> print('%g' % 1111.1111) # 默认6位有效数字
1111.11
>>> print('%.7g' % 1111.1111) # 取7位有效数字
1111.111
>>> print('%.2g' % 1111.1111) # 取2位有效数字,自动转换为科学计数法
1.1e+03

序列

以下为通用的序列操作:(liststrtuplerange

运算 结果
x in s 如果 s 中的某项等于 x 则结果为 True,否则为 False
x not in s 如果 s 中的某项等于 x 则结果为 False,否则为 True
s + t st 相拼接
s * nn * s 相当于 s 与自身进行 n 次拼接
s[i] s 的第 i 项,起始为 0
s[i:j] sij 的切片
s[i:j:k] sij 步长为 k 的切片
len(s) s 的长度
min(s) s 的最小项
max(s) s 的最大项
s.index(x[, i[, j]]) xs 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
s.count(x) xs 中出现的总次数

列表 list

1
2
3
4
L = []

# 矩阵(深拷贝)
Matrix = [[0 for i in range(n)] for i in range(m)] # m*n阶矩阵: M[m][n]

除了通用的序列操作,对于可变序列list还支持:

运算 结果
s[i] = x s 的第 i 项替换为 x
s[i:j] = t sij 的切片替换为可迭代对象 t 的内容
del s[i:j] 等同于 s[i:j] = []
s[i:j:k] = t s[i:j:k] 的元素替换为 t 的元素
del s[i:j:k] 从列表中移除 s[i:j:k] 的元素
s.append(x) x 添加到序列的末尾 (等同于 s[len(s):len(s)] = [x])
s.clear() s 中移除所有项 (等同于 del s[:])
s.copy() 创建 s 的浅拷贝 (等同于 s[:])
s.extend(t)s += t t 的内容扩展 s (基本上等同于 s[len(s):len(s)] = t)
s *= n 使用 s 的内容重复 n 次来对其进行更新
s.insert(i, x) 在由 i 给出的索引位置将 x 插入 s (等同于 s[i:i] = [x])
s.pop([i]) 提取在 i 位置上的项,并将其从 s 中移除
s.remove(x) 删除 s 中第一个 s[i] 等于 x 的项目。
s.reverse() 就地将列表中的元素逆序。a[: :-1]可以达到同样的输出效果。

字符串 str

1
S = "123"

除了通用的序列操作,对于字符串str还支持:

运算 结果
'Py' in 'Python' 如果 字符串 中的某子串等于 前者 则结果为 True,否则为 False
S.lower() 转换为小写串
S.upper() 转换为大写串
S.split(seq) seq为分隔符,转为分割后的列表
S.replace(s1, s2) S中的s1串替换为s2s2 == ''时相当于删除)

字典 dict(哈希表)

1
d = {}

字典dict支持以下操作:

运算 结果
list(d) 返回字典 d 中使用的所有键的列表。
len(d) 返回字典 d 中的项数。
d[key] = value d[key] 设为 value
key in d / key not in d 如果 d 中(不)存在键 key 则返回 True,否则返回 False
d.clear() 清空

集合 set

1
x = set(['Alice', `Bob`])

集合 set支持以下操作:

运算 结果
s.add(ele) 添加元素
s.remove(ele) 删除;删除失败引发KeyError
s.discard(ele) 安全删除(如果有则删除)
d.clear() 清空
update(others) / `set = other` 求并,更新集合,添加来自 others 中的所有元素。
intersection_update(others) / set &= other 求交。
difference_update(others) / set -= other 求差。
symmetric_difference_update(others) / set ^= other 对称差。

数学

1
from math import *
运算 结果
floor(x) / ceil(x) 下/上取整
comb(n, m) 求组合数C(n,m)
factorial(x) 求阶乘x!
gcd(a, b) 最大公约数
exp(x) / log(x, base) / log2(x) / log10(x) / pow(x,y) 幂指函数
sqrt(x) 平方根
sin(x) / cos(x) / tan(x) / asin(x) / acos(x) / atan(x) 三角函数
dist(a, b) 计算两点欧氏距离
pi / e / tau = 2*pi / inf / nan 常量。inf浮点正无穷