Python基础
Python基础
这是一个Python基础合集。适合那些已经学习过一门编程语言的人入门Python。
对象与内存
对象
在python中,万物皆对象。对象有两种;
- 不可变对象:操作后返回副本
- int
- float
- complex
- bool
- str
- tuple
- frozenset
- 可变对象:操作后改变自身
- list
- dict
- set
- 用户定义类
内存
- GC收集方式:引用计数
del()
- 删除对象的引用
- 删除可变序列的元素
id(object)
返回变量内存地址
运算
- 除法
/
总是返回浮点数 - 幂指数
a**5
a的五次方 - 绝对值
abs(num)
- 取整
round(num)
四舍五入 - 最值
max(num) min(num)
- 类型转换
type(original)
- 不同进制表示
0b 0o 0x
binary octal hexadecimal - 链式比较
m < x <= n
序列(sequence)
- 元素的有序集合,能够通过索引访问元素
- 包括
列表(list)
,元组(tuple)
,字符串(str)
,字节串(bytes)
,生成器
等 - Python3.7之后,字典是有序的
操作
- 索引
seq[index]
index可以为负。-1表示序列最后一个元素 - 切片
seq[start:end:step]
- [start, end)左闭右开
- 缺省:start=0, end=lastIndex, step=1
- 逆序:step取负
- 解包
p1, p2, p3 = seq
*
解包,**
字典解包- _:一个变量名
- 加法
seq1 + seq2
- 乘法
seq * repeatNTimes
- 成员检查
element in seq
- 长度
len(seq)
- 最值
min(seq) max(seq)
- 求和
sum(seq)
- 排序
sorted(seq)
- 计数
seq.count(element)
- 索引定位
seq.index(element)
列表(list)
- 不定长可变序列
创建
- 方括号创建
[element1, element2, element3]
- list()创建
list(sequene)
操作
- 由于list是可变对象,可以对其进行修改
- 尾接
l.append(object)
l.extend(list)
append可以是一个列表,整体作为一个元素插入。extend作用相当于list的+= - 插入
l.insert(index, object)
在索引处插入 - 删除
l.remove(object)
删除第一个匹配到的元素。不在列表中会报错 - 弹出
l.pop(index)
删除并返回索引元素 - 排序
l.sort()
- 逆序
l.reverse()
元组(tuple)
- 定长不可变序列
创建
- 圆括号创建
(element1, element2, element3)
,(element,)
- 1的简化形式:逗号分隔
element1, element2, element3
- 使用tuple()将任意序列转换
tuple(sequence)
操作
字符串(str)
- 不可变字符序列
- 人畜无害的Unicode字符串
创建
- 引号创建
"string" 'string'
- 强制转换
str(object) repr(pbject)
string与representation- 数字转字符串
hex(255)
oct(255)
bin(255)
- 数字转字符串
- 格式化字符串
"{} {}".format("a", "b")
操作
- 分割
s.split(separator)
缺省为空白字符(\n \t) - 连接
connector.join(elements)
- 替换
s.replace(old, new)
会匹配所有能替换的old,不改变原字符串 - 大小写转换
s.upper() s.lower()
全大写/全小写 - 去除首尾空格
s.strip() s.lstrip() s.rstrip()
撕开
字典(dict)
- 可变键值对集合(Python3.7及更高版本中,字典是有序的,但不能通过下标访问)
- 键必须是不可变类型
创建
- 大括号创建
{key1: value1, key2: value2}
{}
是空字典 - dict()创建
操作
- 访问与修改值
d[key]
如果没有会报错 - 获取值
d.get(key, default)
default默认为Node,可以自行更改 - 删除键值对
d.pop(key, defualt=None)
删除并返回值,没有这个键则返回默认del(d["key"])
- 更新
d.update(newD)
(其实是合并) - 获取键值
- 键列表
d.keys()
- 值列表
d.values()
- 键值对元组列表
d.items()
- 键列表
集合(set)
- 无序可变不重复
- 集合的元素必须是不可变(且可哈希)的
创建
- 大括号创建
{element1, element2, element3}
- set()创建 空集合必须用set()创建。因为
{}
是空字典
操作
- 交
a.intersection(b)
或a & b
- 并
a.union(b)
或a | b
- 差
a.difference(b)
或a - b
只在a,不在b - 对称差
a.symmetric_difference(b)
或a ^ b
在a并b中,但不在a交b中 - 判断子集
b.issubset(a)
或b <= a
- 判断超集
a.issuperset(b)
或a >= b
- 真子集
a < a
- 添加
s.add(a)
- 更新
s.update(newS)
s.difference_update(b)
从a中去除属于b的元素
- 删除
s.remove(object)
删除指定元素,没有会报错- descard(object) 没有不会报错
- pop() 删除并返回任意元素,没有元素会报错
文件IO
- 打开
open(file, mode='r')
- 读取全部
f.read()
- 按行读取
f.readlines()
返回行列表 - 关闭
f.close()
内置函数与语法糖
range()
列表推导式
- 一种简洁的创建列表的方式
- 操作
- 过滤
[expression for item in iterable if condition]