导图社区 零基础Python入门教学
这是一篇关于零基础Python入门教学的思维导图,主要内容有基础知识 Python语言特点、Python序列、选择与循环等。
编辑于2022-11-13 10:05:01 浙江省Python零基础入门教学
基础知识 Python 语言特点
Python对象模型
数字(int, float, complex)、字符串(str)、字节串(bytes)、列表(list)、字典(dic)、元组(tuple)、集合(set)、
布尔型(bool)、空类型(NoneType)、异常(Exception、ValueError、TypeError)、文件
Python变量
1.变量名必须以英文字母汉字和下划线开头,但以下划线开头的名字在Python中有特殊含义
2.变量名中不能有空格 以及中英文标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等)
3.不能使用关键字作为变量名,可以导入keyword模块后使用print(keyword.kwlist)查看所有Python关键字
4.不建议使用系统内置的模块名、类型名或函数名以及已导入的模块名及其成员名作变量名,这将会改变其类型和含义,可以通过dir(
builtins )查看所有内置模块、类型和函数
5.变量名区分英文字母的大小写敏感,例如student和Student是不同的变量
数字
整形、浮点型、复数
字符串
\n换行符\"双引号\t制表符\一个 \ \r回车 \ooo3位八进制数对应的字符\'单引号\xhh2位十六进制数对应的字符\uhhhh4位十六进制数
运算符与表达式
+ 算术加法,列表、元组、字符串合并与连接,正号
- 算术减法,集合差集,相反数
* 算术乘法,序列重复
** 幂运算
/ 真除法
// 求整商,但如果操作数中有实数的话,结果为实数形式的整数
% 求余数,字符串格式化
<、<=、>、>=、==、!= 大小比较,集合的包含关系比较
or 、and、not 逻辑或、逻辑与、逻辑非
, 普通分隔符
= 赋值表达式
&、|、^ 集合交集、并集、对称差集
in, not in, is, is not, <, <=, >, >=, !=, == 测试、比较
常用内置函数 dir(
builtins
abs(x) 返回数字x的绝对值或复数x的模
ascii(obj) 把对象转换为ASCII码表示形式,必要的时候使用转义字符来表示特定的字符
bin() 把整数x转换为二进制串表示形式
oct() 把整数x转换为八进制串
int(x[, d]) 返回实数(float)、分数(Fraction)或高精度实数(Decimal)x的整数部分,或把d进制的字符串x转换为十进制并返回,d默认为十进制
round(x [, 小数位数]) 对x进行四舍五入,若不指定小数位数,则返回整数
max()、min() 返回可迭代对象x中的最大值、最小值,要求x中的所有元素之间可比较大小,允许指定排序规则和x为空时返回的默认值
sum(x,start=0) 返回序列x中所有元素之和,返回start+sum(x
list([x])、set([x])、tuple([x])、dict([x]) 把对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典
isinstance(obj, class-or-type-or-tuple) 测试对象obj是否属于指定类型(如果有多个类型的话需要放到元组中)的实例
input([提示]) 显示提示,接收键盘输入的内容,返回字符串
map() 返回包含若干函数值的map对象,函数func的参数分别来自于iterables指定的每个迭代对象,
zip() 返回zip对象,其中元素为(seq1[i], seq2[i], ...)形式的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个
####
基本输入输出
input() 输入
print() 输出
模块导入与使用
from 模块名 import 对象名[ as 别名] 可以减少查询次数,提高执行速度
Python序列
列表
lst.append(x) 将元素x添加至列表lst尾部
lst.insert(index, x) 在列表lst指定位置index处添加元素x,该位置后面的所有元素后移一个位置
lst.pop([index]) 删除并返回列表lst中下标为index(默认为-1)的元素
lst.index(x) 返回列表lst中第一个值为x的元素的下标,若不存在值为x的元素则抛出异常
lst.reverse() 对列表lst所有元素进行逆序
lst.copy() 返回列表lst的浅复制
del lst[n] 删除列表中的指定位置上的元素
lst[n] 使用下标直接访问列表元素,如果指定下标不存在,则抛出异常
使用in关键字来判断一个值是否存在于列表中,返回结果为“True”或“False”
切片适用于列表、元组、字符串、range对象等类型,但作用于列表时功能最强大。可以使用切片来截取列表中的任何部分,得到一个新列表,也可以通过切片来修改和删除列表中部分元素,甚至可以通过切片操作为列表对象增加元素
集合
集合的创建与删除
集合中只能包含数字、字符串、元组等不可变类型(或者说可哈希)的数据,而不能包含列表、字典、集合等可变类型的数据
使用set将其他类型数据转换为集合
当不再使用某个集合时,可以使用del命令删除整个集合。集合对象的pop()方法弹出并删除其中一个元素,remove()方法直接删除指定元素,clear()方法清空集合。
集合运算
| 并集、&交集、-差集、^对称差集
< <= 返回布尔型
字典
字典的创建与删除
使用dict利用已有数据创建字典
使用del删除整个字典
字典元素的读取
使用字典对象的get()方法获取指定键对应的值,并且可以在键不存在的时候返回指定值。
使用字典对象的items()方法可以返回字典的元素。
使用字典对象的keys()方法可以返回字典的“键”。 使用字典对象的values()方法可以返回字典的“值”。
字典元素的添加与修改
当以指定键为下标为字典赋值时:1)若键存在,则可以修改该键的值;2)若不存在,则表示添加一个键、值对
使用字典对象的update()方法将另一个字典的键、值对添加到当前字典对象
使用del删除字典中指定键的元素
使用字典对象的clear()方法来删除字典中所有元素 使用字典对象的pop()方法删除并返回指定键的元素 使用字典对象的popitem()方法删除并返回字典中的一个元素
元组
元组的创建与删除
定义时所有元素是放在一对圆括号“()”中,而不是方括号中
使用tuple函数将其他序列转换为元组
可以使用tuple函数将其他序列转换为元组
使用del可以删除元组对象,不能删除元组中的元素
元组与列表的区别
元组一旦定义就不允许更改
元组没有append()、extend()和insert()等方法,无法向元组中添加元素 元组没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行遍历,那么一般使用元组而不用列表 元组对不需要改变的数据进行“写保护”将使得代码更加安全 元组可用作字典的“键”,也可以作为集合的元素。列表不能作为字典的“键”,包含列表、字典、集合或其他类型可变对象的元组也不能做字典的“键”。 如果元组中包含列表或其他类型的可变对象,这些对象是可变的,但元组元素的引用仍是不可变的
序列解包
可以使用序列解包功能对多个变量同时赋值
序列解包对于列表和字典同样有效
序列解包可以遍历多个序列
生成器表达式
生成器推导式的结果是一个生成器对象。使用生成器对象的元素时,可以根据需要将其转化为列表或元组,
也可以使用生成器对象__next__()方法或内置函数next()进行遍历,或者直接将其作为迭代器对象来使用生成器对象具有惰性求值的特点
内置函数
sorted()
列表对象提供了sort()方法支持原地排序,而内置函数sorted()返回新列表,并不对原列表进行任何修改。
sorted()方法可以对列表、元组、字典、range对象等进行排序。 列表的sort()方法和内置函数sorted()都支持key参数实现复杂排序要求
all()和any():all()函数用来测试列表、元组等序列对象以及map对象、zip对象等类似对象中是否所有元素都等价于True,
any()函数用来测试序列或可迭代对象中是否存在等价于True的元素
len(列表):返回列表中的元素个数,同样适用于元组、字典、集合、字符串等
max(列表)、 min(列表):返回列表中的最大或最小元素,同样适用于元组、字典、集合、range对象等
sum(列表):对列表的元素进行求和运算,对非数值型列表运算需要指定start参数,同样适用于元组、range
enumerate(列表):枚举列表元素,返回枚举对象
选择与循环
条件表达式
算术运算符:+、-、
、/、//、%、*
关系运算符:>、<、==、<=、>=、!=,可以连续使用
测试运算符:in、not in、is、is not
逻辑运算符:and、or、not,注意短路求值
位运算符:~、&、|、 ^、 <<、>>
在Python中,条件表达式中不允许使用赋值运算符“=”
选择结构
单分支结构
if 表达式:
语句块
双分支结构
if 表达式:
语句块1
else: 语句块2
嵌套的分支结构
if 表达式1:
语句块1
elif 表达式2: 语句块2 elif 表达式3: 语句块3 else: 语句块4
循环结构
while循环
while 条件表达式:
循环体
[else: else子句代码块]
for循环
for 循环变量 in 可迭代对象:
循环体
[else: else子句代码块]
break和continue语句
break语句在while循环和for循环中都可以使用,一般放在if选择结构中,一旦break语句被执行,将使得整个循环提前结束。
continue语句的作用是终止当前循环,并忽略continue之后的语句,然后回到循环的顶端,提前进入下一次循环。 除非break语句让代码更简单或更清晰,否则不要轻易使用。
字符串与正则表达式
字符串
字符串格式化
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f、%F 浮点数
%g 指数(e)或浮点数 (根据显示长度)
%% 一个字符%
还可以使用format方法进行格式化
字符串常用方法
find()、rfind() :find()和rfind方法分别用来查找一个字符串在另一个字符串指定
范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;
index()、rindex() : index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;
count() :count()方法用来返回一个字符串在当前字符串中出现的次数。
split()、rsplit() :split()和rsplit()方法分别用来以指定字符为分隔符,
把当前字符串从左往右或从右往左分隔成多个字符串,并返回包含分隔结果的列表;
partition()、rpartition() :partition()和rpartition()用来以指定字符串为分隔符将原字符串分隔为3部分,
即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
join() :字符串连接
lower():返回小写字符串
upper() : 返回大写字符串
capitalize() : 字符串首字符大写
title() : 每个单词的首字母大写
swapcase() : 大小写互换
replace( ):查找替换
maketrans() :用来生成字符映射表
translate():用来根据映射表中定义的对应关系转换字符串并替换其中的字符
strip() :删除空白字符
rstrip():删除字符串右端指定字符 lstrip():删除字符串右端指定字符
center()、ljust()、rjust(),返回指定宽度的新字符串,原字符串居中、左对齐或右对齐出现在新字符串中,
如果指定宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充。
isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、isupper()、islower(),
用来测试字符串是否为数字或字母、是否为字母、是否为数字字符、是否为空白字符、是否为大写字母以及是否为小写字母
字符串常量
Python标准库string中定义数字字符、标点符号、英文字母、大写字母、小写字母等常量
可变字符串
在Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能重新创建一个新的字符串对象。然而,如果确实需要一个支持原地修改的unicode数据对象,可以使用io.StringIO对象或array模块
正则表达式
正则表达式语法
. 匹配除换行符以外的任意单个字符
匹配位于
之前的字符或子模式的0次或多次出现
+ 匹配位于+之前的字符或子模式的1次或多次出现
- 在[]之内用来表示范围
| 匹配位于|之前或之后的字符
^ 匹配行首,匹配以^后面的字符开头的字符串
$ 匹配行尾,匹配以$之前的字符结束的字符串
? 匹配位于?之前的0个或1个字符。
\ 表示位于\之后的为转义字符
\num 此处的num是一个正整数,表示子模式编号
\f 换页符匹配
\n 换行符匹配
\r 匹配一个回车符
\b 匹配单词头或单词尾
\B 与\b含义相反
\d 匹配任何数字,相当于'[0-9]’
\D 与\d含义相反,等效于'[^0-9]’
\w 匹配任何字母、数字以及下划线,相当于'[a-zA-Z0-9_]’
() 将位于()内的内容作为一个整体来对待
{m,n} {}前的字符或子模式重复至少m次,至多n次
[] 表示范围,匹配位于[]中的任意一个字符
[^xyz] 反向字符集,匹配除x、y、z之外的任何字符
[a-z] 字符范围,匹配指定范围内的任何字符
[^a-z] 反向范围字符,匹配除小写英文字母之外的任何字符
re模块主要函数
compile(pattern[, flags]) 创建正则表达式对象
escape(string) 将字符串中所有特殊正则表达式字符转义
findall(pattern, string[, flags]) 返回包含字符串中所有与给定模式匹配的项的列表
finditer(pattern, string, flags=0) 返回包含所有匹配项的迭代对象,其中每个匹配项都是Match对象
fullmatch(pattern, string, flags=0) 尝试把模式作用于整个字符串,返回Match对象或None
match(pattern, string[, flags]) 从字符串的开始处匹配模式,返回Match对象或None
purge() 清空正则表达式缓存
search(pattern, string[, flags]) 在整个字符串中寻找模式,返回Match对象或None
split(pattern, string[, maxsplit=0]) 根据模式匹配项分隔字符串
sub(pat, repl, string[, count=0]) 将字符串中所有与pat匹配的项用repl替换,返回新字符串,repl可以是字符串或返回字符串的可调用对象,作用于每个匹配的Match对象
subn(pat, repl, string[, count=0]) 将字符串中所有pat的匹配项用repl替换,返回包含新字符串和替换次数的二元元组,
repl可以是字符串或返回字符串的可调用对象,作用于每个匹配的Match对象
re.A:使得正则表达式中\w、\W、\b、\B、\d、\D、\s和\S等元字符只匹配ASCII字符,不匹配Unicode字符
re.I:忽略大小写 re.M:多行模式,^可以匹配每行开始,$可以匹配每行结束 re.S:单行模式,圆点可以匹配换行符 re.X:允许正则表达式换行
使用正则表达式对象
首先使用re模块的compile()方法将正则表达式编译生成正则表达式对象,然后再使用正则表达式对象提供的方法进行字符串处理。
使用编译后的正则表达式对象可以提高字符串处理速度,也提供了更强大的文本处理功能。 正则表达式对象的match(string[, pos[, endpos]])方法用于在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置; 正则表达式对象的search(string[, pos[, endpos]])方法用于在整个字符串中进行搜索; 正则表达式对象的findall(string[, pos[, endpos]])方法用于在字符串中查找所有符合正则表达式的字符串并返回列表。
match(string[, pos[, endpos]])方法在字符串开头或指定位置进行搜索,模式必须出现在字符串开头或指定位置;
search(string[, pos[, endpos]])方法在整个字符串或指定范围中进行搜索
findall(string[, pos[, endpos]])方法在字符串指定范围中查找所有符合正则表达式的字符串并以列表形式返回。
sub()、subn() 用来实现字符串替换功能
split() 方法用来实现字符串分隔
子模式与Match对象
子模式扩展语法
(?P
):为子模式命名