记一些 Python 的学习笔记,数据类型基础:
数据类型
- 数字
Number - 字符串
String - 列表
List - 元组
Tuple - 字典
Dictionary - 集合
Sets
不可变数据:Number(数字)、String(字符串)、Tuple(元组)、Sets(集合)。
可变数据:List(列表)、Dictionary(字典)。
数字:Python3 支持 int、float、bool、complex(复数)。
整数
- 一些常用计算:
| 运算 | 输入 | 输出 | 描述 |
|---|---|---|---|
| 除法 | 2 / 2 | 1.0 | 永远返回一个浮点数 |
| floor除法 | 3 // 2 | 1 | 丢掉任何小数部分,返回整数 ( 1.5 -> 1 ) |
| 求余 | 17 % 3 | 2 | 返回整数 |
| 幂乘方 | 5 ** 2 | 25 | 5 的平方 |
- 十六进制表达: 加
0x前缀,例如0xff00
浮点数
整数和浮点数的混合计算中,会转换为浮点数计算。
- 科学计数法:
1.23e9和1.2e-5
复数
3+5j,虚数部分用 j 表示,或 complex(3, 5)。
布尔值
True 和 False,注意区分大小写。
字符串
- 转义符:
\
| 输入 | 输出 | 描述 |
|---|---|---|
'\'' | ' | 能正确输出 ' |
'\n' | | 会换行 |
'\\n' | \n | 不会换行 |
r'\n' | \n | r'string' 默认字符串为原始字符串,不转义 |
- 多行字符串文本:
'''\
这是第一行
这是第二行
'''
- 字符串拼接:
| 描述 | 输入 | 输出 |
|---|---|---|
| 重复 | 'un' * 3 | ununun |
| 连接 | 'un' + 'un' | unun |
| 相邻文本自动连接 | 'un' 'un' | unun |
| 自动连接不适用于表达式 | ('un' * 3) 'un' | error |
- 截取、切片:
a = 'Python'
print(a[0]) # 输出 P
print(a[-1]) # 输出 n ,最后一位,-0实际是0
# 切片 左闭右开
print(a[:2]) # 输出 Py
print(a[2:]) # 输出 thon
print(a[:100]) # 输出 Python
print(a[100:]) # 输出 ''
格式化:
例一:
'Hello, %s' % 'world',实际输出'Hello, world', 其中%s被替换成world。例二:
'%s, you have %d apples' % ('Ben', 2),实际输出'Ben, you have 2 apples', 其中%s被替换成Ben,%d被替换成2。例三:
'%d' % 3'%2d' % 3'%02d' % 3, 实际输出'3'' 3''03',依次代表正常、2位数(右对齐)、2位数前置补0。
'%.2f' % 3.1415, 实际输出'3.14', 保留两位小数。例四:
'Hello, {0}, {1.2f}'.format('Ben', 3.1415),实际输出Hello, Ben, 3.14。
正常输出 % 用 %% 转义
| 占位符 | 描述 |
|---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制 |
- 和数字比较
字符串不能直接和数字比较, int('123') < 1000。
列表
有序集合,可添加和删除其中元素
- 索引
a = ['Python', 123, True, 'XYZ']
print(a[0]) # 输出 Python
print(a[-1]) # 输出 XYZ
print(a[100]) # 错误
# 切片 左闭右开
a[0:1] = [] # 现在 a 为 [123, True, 'XYZ']
- 增删
a = ['Python', 123, True, 'XYZ']
# 删
print(a.pop()) # 输出 XYZ, 现在 a 为 ['Python', 123, True]
print(a.pop(1)) # 输出 123, 现在 a 为 ['Python', True]
a.remove('Python') # 移除列表中第一个匹配项
del a[0] # 删除项
# 增
a = ['Python', True]
a.append('XYZ') # 现在 a 为 ['Python', True, 'XYZ']
- 列表生成式
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
squares = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
- 生成器
创建一个包含100万个元素的列表,会占用大量内存,并且通常也用不到全部元素。而生成器不必创建完整的列表,而是在循环的过程中不断推算出后续的元素,节省了大量空间。
squares = (x * x for x in range(10)) # 可用 for 循环迭代
# 把函数变成生成器 generator
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b # 调用 next() 时的返回,再次执行时从此处继续
a, b = b, a + b
n = n + 1
return 'done'
元组
一旦初始化就不能改变
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X' # 此时 t 为 ('a', 'b', ['X', 'B'])
上面代码,修改的是元组 t 中的列表, 元组并没有改变,因为 t[2] 指向没变。
只有一个元素的写法 t = (1,),因为 t = (1) 实际为数字 1。
字典
使用 键-值(key-value)储存,具有极快的查找速度
a = {
'Ben': 2,
'Lemon': 3,
'Tom': 6
}
# 如果key不存在,dict就会报错
print(a['Jack']) # error
# 两种方法避免因为key不存在而报错
# 1. in判断是否存在
if 'Jack' in a:
print(a['Jack'])
# 2. 通过字典提供的get()方法
a.get('Jack') # return None
a.get('Jack', -1) # return -1
# 删除
a.pop('Ben') # return 2 此时 a 为 {'Lemon': 3, 'Tom': 6}
# 输出所有键
print(a.keys()) # return dict_keys(['Lemon', 'Tom'])
# 输出所有值
print(a.values()) # return dict_values([3, 6])
dict 内部存放的顺序,和 key 放入的顺序没有关系。
key 不能变,所以用字符串、整数等作为 key ,不能使用 list 。
集合
无序和无重复元素的集合,类似于只有
key没有value的字典,比如{1, 2, 3},key同样不能是可变元素list。
# 创建集合
s = set([1, 2, 3]) # 提供一个 list 作为输入集合
# 重复元素在set中自动被过滤
s = set([1, 1, 2, 2, 3, 3])
# 显示的顺序也不表示set是有序的
>>> s
{1, 2, 3}
# 增
s.add(4) # {1, 2, 3, 4}
# 删
s.remove(4) # {1, 2, 3, 4}
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
# 交集
>>> s1 & s2
{2, 3}
# 并集
>>> s1 | s2
{1, 2, 3, 4}
s = set([(1, 2, 3)])
print(s) # {(1, 2, 3)}
s = set([(1, 2, [3, 4])])
print(s) # error
数据类型函数整合
一些和数据类型有关的函数整理,并标出相应的模块
数字函数
- 数学函数
| 函数 | 描述 |
|---|---|
abs(x) | 绝对值 |
max(x, y, z) | 返回参数中的最大值 |
min(x, y, z) | 返回参数中的最小值 |
pow(x, y) | 返回 x 的 y 次方 |
round(x[, y]) | x 四舍五入到 y 位小数,无参数 y 则默认整数 |
math.ceil(x) | 向上取整 |
math.floor(x) | 向下取整 |
math.exp(x) | e 的 x 次幂 |
math.fabs(x) | 绝对值,返回浮点数 |
math.log(x) | 以 e 为基数的 x 的对数 |
math.log10(x) | 以 10 为基数的 x 的对数 |
math.modf(3.15) | 返回(小数部分,整数部分),例 (0.149999, 3.0),都是浮点数 |
math.sqrt(x) | x 的平方根,浮点型 |
- 数学常量
| 常量 | 描述 |
|---|---|
math.pi | 圆周率 |
math.e | 自然常数 |
- 随机数函数
| 常量 | 描述 |
|---|---|
random.choice(seq) | 从序列的元素中随机挑一个 |
random.randrange([开始值,]结束值[, 间隔步长]) | 从指定范围指定步长中获取随机数,步长默认1 |
random.random | 随机生成 [0,1) 的随机数 |
random.shuffle(list) | 将整个序列随机排序, 返回 None |
random.uniform(x, y) | 生成 [x, y] 范围内的一个随机数 |
- 三角函数
| 函数 | 描述 |
|---|---|
math.acos(x) | x 的反余弦弧度值 |
math.asin(x) | x 的反正弦弧度值 |
math.atan(x) | x 的反正切弧度值 |
math.atan2(y, x) | 给定的 x、y 坐标的反正切弧度值 |
math.cos(x) | 余弦 |
math.sin(x) | 正弦 |
math.tan(x) | 正切 |
math.degrees(x) | 弧度转角度,浮点型 |
math.radians(x) | 角度转弧度,浮点型 |
字符串方法
| 函数 | 描述 |
|---|---|
capitalize() | 首字符大写 |
lower() | 全转为小写 |
upper() | 全转为大写 |
center(w, f) | 以 w 为宽居中,以 f 填充 |
ljust(w[, f]) | 以 w 为宽左对齐,以 f 填充,默认空格 |
rjust(w[, f]) | 以 w 为宽右对齐,以 f 填充,默认空格 |
count(str, beg=0, end=len(str)) | str 在字符串中出现次数,beg 和 end 指定查找位置 |
endswith(str, beg=0, end=len(str)) | 是否以 str 结束 |
expandtabs(tabsize=8) | 将 tab 转为空格,默认为 8 空格 |
find(str, beg=0, end=len(str)) | 返回 str 在字符串中位置,没有则 -1 |
rfind(str, beg=0, end=len(str)) | 从右边找 |
index(str, beg=0, end=len(str)) | 返回 str 在字符串中位置,没有则报错 |
join(seq) | 以字符串作间隔符,将序列seq合并为新字符串 |
lstrip() | 截掉字符串左边的空格或指定字符 |
rstrip() | 截掉字符串右边的空格或指定字符 |
strip() | 截掉字符串两边的空格或指定字符 |
replace(old, new[, max]) | 将字符串中 old 替换为 new,不超过 max 次 |
列表方法
| 函数 | 描述 |
|---|---|
append(obj) | 在列表末尾添加新对象 |
count(obj) | 某个元素在列表中出现的次数 |
extend(seq) | 将另一个序列中的值追加到列表末尾 |
index(obj) | 返回第一个匹配项的索引位置 |
insert(index, obj) | 将对象插入列表 |
pop(index) | 移除列表中的一个元素,默认最后一个元素,并返回值 |
remove(obj) | 移除某个值的第一个匹配项 |
reverse() | 反向排列 |
sort([func]) | 排序 |
clear() | 清空列表 |
copy() | 复制列表 |
字典方法
| 函数 | 描述 |
|---|---|
clear() | 删除字典内所有函数 |
copy() | 返回一个字典的浅复制 |
get(key[, defaultValue]) | 返回指定键的值,如果没有就返回 defaultValue |
key in dict | key 在字典中就返回 True, 否则返回 False |
items() | 返回可遍历的(键,值)元组列表,例 dict_items([(‘key1’, ‘value’), (‘key2’, ‘value2’)]) |
keys() | 以列表返回所有键 |
values() | 以列表返回所有值 |
setdefault(key, default=None) | 如果键不存在,则设为default |
update(otherDict) | 将 otherDict 的键、值更新到字典中 |
pop(key[, default]) | 删除 key 所对应的值,返回为被删除的值。找不到 key,返回default 值 |
popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾对) |
本文详细介绍了Python的基础知识,包括数据类型如整数、浮点数、复数、布尔值、字符串、列表、元组、字典和集合等。还介绍了各种数据类型的使用方法,如字符串的拼接与格式化、列表的操作方法、元组的特点及应用、字典的增删查改等。
&spm=1001.2101.3001.5002&articleId=80178016&d=1&t=3&u=f62aca6257754016952ff2a397d9542e)
413

被折叠的 条评论
为什么被折叠?



