int
bit_length()
返回以二进制表示一个整数所需要的位数
to_bytes(length, byteorder, *, signed=False)
返回表示一个整数的字节数组, length表示用多少个字节来表示整个整数,如果length个字节不足以表示这个整数会抛出OverflowError 异常
byteorder则是大端(big )和小端(little )字节序,可以通过sys.byteorder 获取到系统的使用的字节序,
signed表示是否使用补码来表示整数
from_bytes(bytes, byteorder, *, signed=False)
返回由给定字节数组所表示的整数
float
is_integer()
如果 float 实例可用有限位整数表示则返回 True,否则返回 False。就判断它小数点后是不是都是0
hex()
以十六进制字符串的形式返回一个浮点数表示 这东西实际应用中没什么用,主要是因为Python浮点数并不准确,调试的时候可以转成十六进制
fromhex(s)
返回以十六进制字符串 s 表示的浮点数的类方法
通用序列操作
通用序列,如list, set, tuple, str等
运算 | 结果 |
---|
x in s | x是s的其中一个元素 则结果为 True,否则为 False | x not in s | x不是s的其中一个元素 则结果为 True,否则为 False | s+t | s 与 t 相拼接 | s[i] | s 的第 i 项,起始为 0 | s[i:j] | s 从 i 到 j 的切片 | s[i:j:k] | s 从 i 到 j 步长为 k 的切片 | len(s) | s 的长度 | min(s) | s 的最小项 | max(s) | s 的最大项 | s.index(x[, i[, j]]) | x 在 s 中首次出现项的索引号(索引号在 i 或其后且在 j 之前) | s.count(x) | x 在 s 中出现的总次数 |
in和not in
在一些特殊序列中,in和not in不只可以用于元素检测,也可以用于子序列检测,比如:str、bytes和bytearray "gg" in "eggs"
s * n
有个容易错的地方,先看代码:
只修改lists[0]这个列表,三个元素都变了。因为*运算符并不会复制生成新的元素,只是同样的引用
s[i:j]
如果i和j为负数,则会被替换成 len(s)+i 和len(s)+j 。
如果i、j大于len(s),则取len(s) ;如果i省略或为None,则取0;如果j省略或者未None,则取len(s);如果i大于j,则切片为空
s + t
对于不可变对象,会生成一个新的对象。运行时开销将会基于序列总长度的乘方,想要获得线性的运行时开销,有如下建议
- 如果拼接 str 对象,你可以构建一个列表并在最后使用 str.join() 或是写入一个 io.StringIO 实例并在结束时获取它的值
- 如果拼接 bytes 对象,你可以类似地使用 bytes.join() 或 io.BytesIO,或者你也可以使用 bytearray 对象进行原地拼接。 bytearray 对象是可变的,并且具有高效的重分配机制
- 如果拼接 tuple 对象,请改为扩展 list
可变序列操作
运算 | 结果 |
---|
s[i] = x | 将 s 的第 i 项替换为 x | s[i:j] = t | 将 s 从 i 到 j 的切片替换为可迭代对象 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.clear() | 将 s 的第 i 项替换为 x | s.copy() | 从 s 中移除所有项 (等同于 del 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 中移除, i默认为-1 | s.remove(x) | 删除 s 中第一个 s[i] 等于 x 的项目 | s.reverse() | 就地将列表中的元素逆序 |
list
sort(*, key=None, reverse=False)
对该列表进行排序
str
两个连续的字符串会被隐式的拼接成一个字符串
str的常用方法
-
endswith |startswith : 判断某个字符串是不是以什么开头或结尾,参数可以是字符串,也可以是字符串组成的元组 -
count : 判断某个子字符串在另一个字符串出现的次数, -
rindex |index |find : 在字符串中查找另一个字符串出现的第一个索引位置 -
format : 格式化字符串 -
isdigit |isalpha |isalnum : 判断字符串是否全是数字|字母|(字母或数字) -
join : 字符串序列拼接成一个字符串 -
lstrip |rstrip |strip : 移除开头末尾的字符串,注意:不是出现整个时才会移除,而是会移除字符串中的任意一个字符。a.lstrip(b),会从左开始遍历a,如果该字符在b中,则移除,直到遇到不属于b的字符。 -
rsplit |spilt | : 根据给定的字符串切割另一个字符串 -
replace : 替换字符串为新字符串
str的所有方法
- str.capitalize(): 返回一个首字母大写的副本
- str.casefold():返回原字符串消除大小写的副本,类似于转小写,但更彻底,比如德语小写字母 ‘?’ 会转化为 “ss”
- str.center(width[, fillchar]): 返回长度为width的字符串,左右用相同数量的fillchar字符填充,默认是空格
- str.count(sub[, start[, end]]):返回子字符串 sub 在 [start, end] 范围内非重叠出现的次数
- str.encode(encoding=“utf-8”, errors=“strict”):返回原字符串编码为字节串对象
- str.endswith(suffix[, start[, end]]):如果字符串以指定的 suffix 结束返回 True,suffix 可以给定多个字符串的元组
- str.expandtabs(tabsize=8): 将字符串中的
\t 替换成tabsize个空格 - str.find(sub[, start[, end]]): 返回子字符串 sub 在 s[start:end] 切片内被找到的最小索引,如果未找到,则返回-1
- str.format(*args, **kwargs): 格式化字符串
- str.format_map(mapping):类似于
str.format(**mapping) - str.index(sub[, start[, end]]):同find
- str.isalnum():如果字符串中的所有字符都是字母或数字且至少有一个字符,则返回 True
- str.isalpha():如果字符串中的所有字符都是字母,并且至少有一个字符,返回 True
- str.isascii(): 如果字符串为空或字符串中的所有字符都是 ASCII ,返回 True
- str.isdecimal(): 如果字符串中的所有字符都是十进制字符且该字符串至少有一个字符,则返回 True
- str.isdigit():如果字符串中的所有字符都是数字,并且至少有一个字符,返回 True
- str.isidentifier():如果字符串是有效的标识符,返回 True
- str.islower():如果字符串中至少有一个区分大小写的字符 且此类字符均为小写则返回 True
- str.isnumeric():如果字符串中至少有一个字符且所有字符均为数值字符则返回 True
- str.isprintable():如果字符串中所有字符均为可打印字符或字符串为空则返回 True
- str.isspace():如果字符串中只有空白字符且至少有一个字符则返回 True
- str.istitle():如果字符串中至少有一个字符且为标题字符串则返回 True
- str.isupper():如果字符串中至少有一个区分大小写的字符 且此类字符均为大写则返回 True
- str.join(iterable):返回一个由 iterable 中的字符串拼接而成的字符串
- str.ljust(width[, fillchar]):返回长度为 width 的字符串,原字符串在其中靠左对齐,用fillchar填充
- str.lower(): 所有区分大小写的字符 均转换为小写
- str.lstrip([chars]): 移除开头所有的chars指定的字符,默认所有空白字符
- str.maketrans(x[, y[, z]]): 返回一个可供 str.translate() 使用的转换对照表
- str.partition(sep): 在 sep 首次出现的位置拆分字符串
- str.replace(old, new[, count]): 出现的所有子字符串 old 都将被替换为 new.如果给出了可选参数 count,则只替换前 count 次出现
- str.rfind(sub[, start[, end]]): 返回子字符串 sub 在字符串内被找到的最大(最右)索引,未找到返回-1
- str.rindex(sub[, start[, end]]): 同rfind,但未找到会触发
ValueError 异常 - str.rjust(width[, fillchar]):居右对齐
- str.rpartition(sep):在 sep 最后一次出现的位置拆分字符串,返回一个 3 元组
- str.rsplit(sep=None, maxsplit=-1): 从最右边开始用sep切割字符串
- str.rstrip([chars]):移除末尾的指定字符
- str.split(sep=None, maxsplit=-1):从左用sep切割字符,默认用空白符切割
- str.splitlines([keepends]):用行分隔符来切割,keepends表示要不要在字符串末尾保留分隔符
- str.startswith(prefix[, start[, end]]):是否以prefix开始
- str.strip([chars]):移除前后指定的chars
- str.swapcase():大小写反转
- str.title():每个单词首字母大写
- str.translate(table):按给定的转换表进行映射
- str.upper():所有区分大小写的字符 均转换为大写
- str.zfill(width):右对齐,用0填充字符
%的用法
格式:%[1][2][3][.4][5] 例如:"%(name)#10.2f" % {"name": 32434.22222}
- ()里面写关键字参数,比如(name)
- 旗帜符,总共有五个
# ,0 ,- , ,+ , - 格式化的字符串的长度,比如
python 想格式化成10个字符就写10,默认填充空格,可根据旗帜符控制 - 浮点数精确到小数点后几位
- 格式化控制符(下面称转化符)
除了第五个,其他都可以省略
1、关键字参数 其中name表示取后面字典中name的值,#表示替换的形式,比如#x 表示格式化成0x的字符串。10表示字符的宽度,默认用空格填充。.2 表示如果是浮点数则精确到小数点后两位,f表示要格式化的值是个浮点数
如果给定了(name)的形式,则%后面跟的必须是字典类型的,否则是元组或单个值
2、旗帜符
# : 如果后面是x,则加上0x (十六进制),如果是o则加上0o (八进制)0 : 用0来填充,- : 填充时左对齐,' ' (空格): 正数(或空字符串)前将留出一个空格,+ : 在前面加上+和-号
3、格式化控制符
转化符 - | 含义 |
---|
d 或i | 有符号十进制整数 | o | 有符号八进制数 | x 或X | 有符号十六进制数 | e 或E | 浮点指数格式 | f 或F | 浮点十进制格式 | g 或G | 浮点格式 | c | 单个字节 | b | 字节串,只支持bytes或bytearray | s | 字符串 , 可以对任何对象使用,相当于str(obj) | a 或r | 字节串,可以对任何对象使用 相当于repr(obj).encode('ascii','backslashreplace) | % | 没什么含义,就输出% |
str.format
格式:{[field_name] [! conversion] [:format_spec] }
- field_name: 关键词或位置,比如name或0,也可以不写,比如:
{} - conversion: 有三个值
s 会调用str,r 会调用repr,a 会调用ascii - format_spec: 是否格式化语法,但比%要复杂一点
位置参数 关键字参数 conversion用法
format_spec格式:[[fill]align][sign][#][0][width][grouping_option][.precision][type]
[[fill]align]
- fill: 填充的字符,默认空格。给了fill必须给align
- align:对齐方式,
< 左对齐 > 右对齐 = 填充字符放在±号之后,^ 居中
[sign][#][0][width]
- sign: 是否显示±号,
+ 正负都显示, - 负数显示, 正数前加空格,负数使用-号 - #: 和%的一个意思,十六进制加0x,八进制加0o
- 0: 填充0,与fill区别在于填充会放在±和0x之后
- width: 格式化的字符串宽度
[grouping_option][.precision][type]
- grouping_option: 有两个取值:
_ 和, ,大概就是把1000变成1_000和1,000 - precision:表示精确到小数点后几位
- type:和%的格式化控制符基本一样,比如s,d等。不同的地方:%会将数字乘以100然后在后面加个%,可以使用日期相关的格式控制符
|