数据类型
https://docs.python.org/zh-cn/3/library/stdtypes.html
1. 数字
数字对象是不可变的;一旦创建,其值就不再改变。 数字分为以下几种类型:
int
整型、整数- 比如:
x = 1
- 比如:
bool
布尔型、逻辑值False
和True
- 比如:
x = True
- 布尔类型是整型的子类型,两个布尔值在各种场合的行为分别类似于数值 0 和 1,例外情况只有在转换为字符串时分别返回字符串 "False" 或 "True"。
- 比如:
float
浮点型、小数- 比如:
x = 0.5
- 比如:
complex
复数(不常用,入门时忽略)
2. 序列
对于一个长度为 n 的序列
从左往右其索引为 0, 1, 2, ... , n-1
从右往左其索引为 -1, -2, -3 ...
可通过索引下标直接访问元素:访问序列 x 的第 i 位元素 x[i]
最后一个元素为 x[n-1]
或者 x[-1]
string
字符串- 比如:
x = 'hello'
- 不可变序列
- Python 中没有字符
char
类型,相应的只有长度为 1 的字符串类型 - 字符串使用单引号
'
或者双引号"
引起来构成
- 比如:
tuple
元组- 比如:
x = ('a', 'b', 3)
- 不可变序列
- 元组常用小括号
()
括起并由逗号分隔的多个表达式构成 - 不常用法:由逗号分隔的表达式即可构成元组:
b = 1, 2
或者a = 1,
(不推荐使用)
- 比如:
list
列表- 比如:
x = ['a', 'b', 3]
- 可变序列
- 列表由用方括号
[]
括起并由逗号分隔的多个表达式构成
- 比如:
bytes
字节串(不常用,入门时忽略)bytearray
字节数组(不常用,入门时忽略)
3. 集合
此类对象表示由不重复且不可变对象组成的无序且有限的集合。
常见的用途包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。
set
集合- 比如:
x = {'a', 'b', 3}
- 可变集合,可通过内置的
set()
构造器或者大括号{}
括起来创建
- 比如:
frozenset
冻结集合(不常用,入门时忽略)
4. 映射
dict
字典- 比如:
x = {1: 'a', 2: 'b'}
- 字典是可变的
- 使用大括号内以逗号分隔
{键: 值}
对的方式创建 - 字典的 key(键)必须是可哈希的,可作为字典 key 的类型有:
int/float/string/tuple
;list/set/dict
不可以作为 key - 数字类型用作 key 时遵循数字比较的一般规则:如果两个数值相等,就认为它们是同一个 key
- 比如:
进阶1. 通用序列操作
大多数序列类型,包括可变类型和不可变类型都支持下表中的操作。
运算 | 结果 | 备注 |
---|---|---|
x in s | 如果 s 中的某项等于 x 则结果为 True ,否则为 False | |
x not in s | 如果 s 中的某项等于 x 则结果为 False ,否则为 True | |
s + t | s 与 t 相拼接 | t 和 s 是相同类型的序列 |
s * n 或 n * s | 相当于 s 与自身进行 n 次拼接 | n 为整数;当为负数时返回空 字符串/空 列表... |
s[i] | s 的第 i 项,起始为 0 | |
s[i:j] | s 从 i 到 j 的切片 | 左闭右开区间,不包含 j |
s[i:j:k] | s 从 i 到 j 步长为 k 的切片 | |
len(s) | s 的长度 | |
min(s) | s 的最小项 | |
max(s) | s 的最大项 | |
s.index(x[, start[, end]]) | x 在 s 中首次出现项的索引号(索引号在 start 和 end 之间) | 通常直接使用 s.index(x) |
s.count(x) | x 在 s 中出现的总次数 |
进阶2. 字符串常用方法
方法 | 介绍 | 备注 |
---|---|---|
isalnum() | 判断字符串是否仅由字母 或数字 组成 | 返回 True 或 False |
isalpha() | 判断字符串是否仅由字母 组成 | 返回 True 或 False |
isdigit() | 判断字符串是否仅由数字 组成 | 返回 True 或 False |
join(iterable) | 将序列 iterable 拼接 成一个新的字符串 | '+'.join([1,2,3]) 这个含义就是使用字符串 + 将 [1,2,3] 序列拼接成字符串 1+2+3 |
lower() | 将字符串转为小写 | 返回全小写副本 |
upper() | 将字符串转为大写 | 返回全大写副本 |
swapcase() | 将字符串大小写 互换 | |
replace(old, new) | 字符串替换 | 所有子字符串 old 都将被替换为 new 。 如果给出了可选参数 count ,则只替换前 count 次出现 |
split(sep=None) | 字符串分割 | 使用 sep 作为分割字符串,默认以空格进行分割;返回列表 |
strip([chars]) | 移除 字符串前后指定字符 | 默认移除前后的空格 |
zfill(width) | 字符串填充 0 | 填充 0 使字符串长度达到 width |
进阶3. 列表常用方法
方法 | 介绍 | 备注 |
---|---|---|
append(x) | 追加 元素 x 到列表的末尾 | 返回 None |
extend(t) | 用列表 t 扩展 列表 | 返回 None ;相当于 list += t |
insert(i, x) | 在索引 i 的位置插入 元素 x | 返回 None |
sort() | 对列表进行 原地排序 | 返回 None |
reverse() | 对列表进行 原地逆序 | 返回 None |
进阶4. 字典常用方法
以 d
表示一个字典实例,比如 d = {1: 'a', 2: 'b'}
方法 | 介绍 | 备注 |
---|---|---|
d[key] | 返回 d 中以 key 为键的项 | 如果不存在 key 则会引发 KeyError |
d[key] = value | 将 d[key] 设为 value | |
del d[key] | 将 d[key] 从 d 中移除 | 如果不存在 key 则会引发 KeyError |
d.get(key, default=None) | 如果 key 存在于字典中则返回 key 的值,否则返回 default。如果 default 未给出则默认为 None,因而此方法绝不会引发 KeyError | |
d.items() | 返回由字典项 ((键, 值) 对) 组成的一个新视图 | 常用于遍历字典 |