week02学习总结
day06循环和列表
1.for循环
语法:
for 变量 in 序列:
循环体
执行过程:让变量依次去序列中取值,一个一个的取,取完为止,每取一个值就依次执行循环体。
for循环循环次数由序列中元素的个数决定。
2.while循环
语法:
while 条件语句:
循环体
执行过程:
不断判断条件是否为True,为True就执行循环体,直到条件语句的结果为False,整个循环结束
3.列表
1.系统类型,是容器型数据类型(同时保存多个数据);将[]作为容器的标志,里面多个元素(容器中每个独立的数据)用逗号隔开:[数据1,数据2,数据3,数据4]
2.列表是可变的(元素的个数和元素的值可变 - 支持删改操作)列表是有序(支持索引操作)
4.列表
a.查单个
列表[索引]
索引 - 又叫下标;索引指的是元素在有序序列中的位置信息
列表一旦确定了,那么列表中每个元素的索引就确定了
索引的确定方式:从前往后索引值从0开始不断加一;从后往前从-1开始往前不断减一
b.切片
完整语法:
列表[开始下标:结束下标:步长]
开始下标 - 确定从哪个位置开始获取
结束下标 - 确定结束的位置
步长 - 确定获取方向和取的时候怎么取
要点
a.怎么确定切片的结果
b.怎么写切片表达式获取到需要的数据
省略写法:
a.省略步长:
列表[开始下标:结束下标]
省略步长就相当于步长为1
b.省略开始下标:
print(names(:-3:-1) - 如果步长为正从第一个元素开始,如果步长为负从最后一个元素开始
c.省略结束下标:列表[开始下标::步长] - 如果步长为正一直取到最后一个元素,如果步长为负一直取到第一个元素
c.遍历
方法1:直接获取元素
for 变量 in 列表:
循环体
方法2:先获取每个元素的下标,然后再根据下标获取元素
for 变量 in range(len(列表)):
循环体(变量是元素对应的下标)
day07-列表进阶
1.列表的增删改
a.增
1.append
语法:
列表.append(元素)
在列表的最后添加元素
2.insert
语法:
列表.insert(下标, 元素)
在指定下标对应的元素前插入指定元素
b.删
1.del
语法:del 列表[下标]
删除列表中指定下标的元素
2.remove
语法:
列表.remove(元素)
删除列表中指定的第一个元素
3.pop
语法:
列表.pop() - 取出列表中最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
c.改
语法:列表 [下标] = 新元素
修改列表中指定下标对应的元素为新元素
2.列表相关操作
a.列表的加法和乘法运算
1.加法运算: 列表1+列表2 - 将俩个列表合并创建一个新的列表
2.乘法运算:列表*N - 重复列表中的元素N次产生一个新的列表
b.列表的比较运算
1.比较是否相等(==、!=)
2.比较大小(>、<、>=、<=)
两个列表比较大小比较的是第一对不相等的元素的大小(相同位置上的元素叫一队)
3.in和not in
元素 in 列表 - 判断指定列表中是否存在指定元素
元素 not in 列表 - 判断指定列表中是否不存在指定元素
3.列表相关函数
系统提供的和序列相关的常用函数:sum、max、min、sorted、len、list
a.求和函数 - sum
sum(数字序列) - 求数字序列中所有元素的和
b.max、min
max(序列) - 求序列中最大的元素
min(序列) - 求序列中最小的元素
c.sorted
1.sorted(序列) - 将序列中的元素从小到大排序,产生一个新的列表(不会修改原序列元素的顺序)
2.sorted(序列, reverse=True) - 将序列中的元素从小到大排序,产生一个新的列表(不会修改原序列元素的顺序)
d.len
len(序列) - 获取序列的长度(序列中元素的个数)
e.list
list(序列) - 将指定的数据转换成列表(只有序列才能转换成列表)
4.列表相关方法
a.clear
列表.clear() - 清空列表
b.copy
列表.copy() - 复制原列表产生一个一模一样的列表
c.count
列表.count(元素) - 统计列表中指定元素的个数
d.extend
列表.extend(序列) - 将序列中所有的元素都添加到列表中
e.index
列表.index(元素) - 显示列表中第一个元素的下标
f.reverse
将列表逆序
g.sort
1.列表.sort() - 将列表中的元素从小到大排序(直接修改原列表元素的顺序)
2.列表.sort(reverse=True) - 将列表中的元素从大到小排序(直接修改原列表元素的顺序)
5.列表推导式
a.结构1
[表达式 for 变量 in 序列]
让变量去序列中取值,一个一个的取,取完为止,每取一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素
b.结构2
[表达式 for 变量 in 序列 if 条件语句]
让变量取序列中取值,一个一个的取,取完为止;每取一个值就判断一次条件是否成立,如果成立就计算一次表达式的结果,并且将结果作为列表的元素
day08-字典元组集合
1.字典
1.字典的作用:
字典和列表的选择问题:
1.同时保存多个意义不同的数据用字典(字典保存数据的时候可以通过不同的键来对数据进行区分和说明)
2.同时保存多个意义相同的数据用列表
2.什么是字典
a.字典是容器型数据类型(能同时保存多个数据);
将{}作为容器的标志,里面的多个键值对用逗号隔开:{键1:值1, 键2:值2, 键3:值3, …}
b.字典是可变的;字典是无序的(不支持下标操作)
c.字典的元素是键值对
键:键必须是不可变类型的数据(常见不可变类型的数据:字符串、元组、数字、布尔等);键是唯一的
值:任何类型的数据都可以作为字典的值
2.字典的增删改查
1.查
a.查单个
字典[键]
若不存在则会报错
字典.get(获取字典中指定键对应的值)
字典.get(键, 默认值) - 获取字典中指定键对应的值,如果键不存在不会报错返回默认值
b.遍历
for 变量 in 字典
循环体(变量依次取到的是键)
2.增
字典[键]=值 - 如果键不存在就添加键值对,如果键存在就修改指定键对应的值
键不在的时候添加键值对,键在的时候修改键值对
字典.setdefault(键,值) - 添加键值对(键不存在就添加,存在的时候不会修改)
3.删
del 字典[键] - 删除指定键的键值对
字典.pop(键) - 取出指定键的键值对
3.字典相关操作
a.相关操作
1.字典不支持+、*和比较大小
2.in和 not in
键 in 字典 - 判断字典中是否存在指定的键
b.相关操作
len(字典) - 统计字典中键值对的个数
dict(数据) - 将指定数据转换成字典 - 要求:a.数据本身是一个大的序列 b.数列中的每个元素必须是有且只有两个元素的小序列
注意:将字典转换成列表的时候,是直接将字典的键作为列表的元素
c.相关方法
a.clear
b.copy
c.item,keys,values
字典.items() - 将字典中每一个键值对转换成元组作为新序列中的元素
字典.keys() - 获取字典所有的键,返回一个序列
字典.values() - 获取字典所有的值,返回一个序列
字典.update() - 将第二个序列中的键值对加入到第一个字典中
4.元组和集合
元组
容器型数据类型;将()作为容器的标志,里面多个元素用逗号隔开:(数据1, 数据2, 数据3,…)
不可变的;有序的(元组就是不可变的列表)
任何类型的数据都可以作为元组的元素
集合
容器型数据类型;将{}作为容器的标志,里面多个元素用逗号隔开:{数据1, 数据2, 数据3,…}
可变的;无序的
集合对元素的要求和字典对键的要求一样
day09-字符串
1.数学集合运算
a.求交集(&)
求两个集合公共的部分
b.求并集(|)
将两个集合合并成一个集合
c.求差集(-)
去掉一个集合中被包含在另外一个集合中的部分剩下的部分
d.求对称差集(^)
合并俩个集合后去掉公共的部分
e.子集(>=,<=)和真子集(>,<)
A>B-判断B是否是A的真子集
A<B-判断A是否是B的真子集
A>=B-判断B是否是A的子集
A<=B-判断A是否是B的子集
2.字符串和字符
a.什么是字符串(str)
1.容器型数据类型(一种同时保存多个文字符号的容器):
将引号(既可以是一个引号开头和结尾,也可以是三个引号开头和结尾)作为容器的标志,里面的每个符号就是字符串的元素
2.字符串是不可变的;字符串是有序的
3.字符串中的元素可以是任何文字符号,字符串的元素又叫字符
b.转义字符
字符串中的每个独立的符号就是字符串的元素,又叫字符;字符串中的字符分为两种:普通字符、转义字符
普通字符:在字符串中表示符号本身的字符就是普通字符
转义字符:在特定符号前加\表示特殊意义或者特殊功能的字符就是转义字符
常用的转义字符:
\n - 换行
\t - 水平制表符(相当于按了一下tab)
’ - 普通的单引号
" - 普通的双引号
\ - 一个反斜杠
c.r字符串
在字符串的最前面加r或者R,可以让字符串中所有的转义字符的功能消失(r可以让字符串中所有的字符都编程普通字符)
3.字符编码
a.字符编码
计算机只具备保存数字的能力,为了能够让计算机存储文字符号,给每一个符号对应了一个固定的数字,每次在需要存储文字符号的时候就存储这个符号对应的数字。
每个字符对应的那个固定的数字,就是这个字符的编码值。
b.编码表
常见的编码表有两种:ASCII码表、Unicode编码表(python)
a.ASCII码表:只有128个字符(全是美国常用的符号)
数字字符在大写字母的前面
大写字母在小写字母前面
字母和数字字符都是连续递增
大写字母和小写字母之间有间隙
(0-48;A-65;a-97)
b.Unicode编码表
Unicode编码表中前128个字符就是ASCII码表中的字符
Unicode编码表中包含了世界上所有的国家所有的名族的所有的语言的符号(万国码)
中文编码范围:4e00~9fa5
chr(编码值) - 获取编码值对应字符
ord(字符) - 获取指定字符对应的编码值
c.编码字符
在字符串中表示字符有两种方法:直接提供字符、提供编码字符
编码字符:\u4位的16进制编码值
4.字符串基本操作
a.查操作
获取字符:和列表获取元素的语法一样
1.查单个:字符串[下标]
2.字符串切片
3.遍历
b.字符串相关操作
1.字符串1+字符串2 - 将两个字符串合并成一个新的字符串
2.字符串*N - 字符串重复N次产生一个新的字符
3.in 和 not in
字符串1 in 字符串2 - 判断字符串1是否是字符串2的子串(判断字符串2中是否包含字符串1)
4.比较运算
两个字符串比较大小比较的是第一对不相等的字符的大小
比较运算的应用 - 判断字符的性质
判断x是否是数字字符:‘0’<=x<=‘9’
判断x是否是小写字母:‘a’<=x<=‘z’
判断x是否是大写字母:‘A’<=x<=‘Z’
判断x是否是字母:‘a’<=x<=‘z’or’A’<=x<=‘Z’
判断x是否是中文:‘\u4e00’<=x<=‘\u9fa5’
c.字符串相关函数
len(字符串) - 统计字符串中字符的个数
str(数据) - 将指定的数据转换为字符串(所有的数据都可以转换为字符串,转换的是在打印值的外面加引号)
day10-字符串和函数基础
1.字符串相关方法
(字符串.xxx())
a.字符串.join(序列) - 将序列中的元素通过指定的字符串拼接成一个新的字符串
b.字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点进行切割,返回一个列表
c.
字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2都替换成字符串3,返回一个新的字符串
字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前n个字符串2都替换成字符串3,返回一个新的字符串
d.
字符串1.find(字符串2) - 查找字符串1中字符串2第一次出现的位置,如果字符串2不存在返回-1
字符串1.index(字符串2) - 查找字符串1中字符串2第一次出现的位置,如果字符串2不存在报错
e.
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
字符串1.count(字符串2, 开始下标, 结束下标) - 统计字符串1指定范围中字符串2出现的次数
f.
字符串.upper() - 将字符串中所有的小写字母转换成对应的大写字母
字符串.lower() - 将字符串中所有的大写字母转换成对应的小写字母
g.
str.maketrans(字符串1, 字符串2) - 创建字符串1中所有字符和字符串2中所有字符对应的对应关系表(字符串1和字符串2长度必须一样)
字符串.translate(对应关系表) - 将字符串中的字符按照对应关系表中的对应关系进行替换
h.
字符串.isdecimal() - 判断字符串是否纯数字字符串(数字指任何独立存在表示数字意义的字符)
字符串.isdigit() - 判断字符串是否纯数字字符串(数字只表示阿拉伯数字)
字符.isupper() - 判断字符是否是大写字母
字符.islower() - 判断字符是否是小写字母
2.格式字符串
1.字符串拼接
2.字符串格式占位符
包含格式占位符的字符串%(数据1,数据2,数据3,…)
常见的格式占位符:
%s - 可以给任何类型的数据占位
%d - 数字占位符,拼接的时候会将数字转换成整形
%f - 数字占位符,拼接的时候会保留6位小数
%.Nf - 数字占位符,拼接的时候会保留N位小数
3.f-string
在字符串最外面加f,然后在字符串中通过{表达式}来提供字符串内容
4.f-string可以在{}中添加参数:{提供数据的表达式:参数}
a.控制小数位数的参数:{表达式:.Nf}
b. 百分比:{表达式:.N%}
c.大数据逗号显示:{表达式:,}
d.控制填充长度:{表达式:字符>长度}、{表达式:字符<长度}、{表达式:字符^长度}
3.函数
a.什么是函数
函数就是实现某一特定功能的代码的封装。(函数就是把实现某一个功能的所有的代码打成一个包,以后在需要这段代码对应的功能的时候不需要再写这段代码了,而是直接调用封装这段代码的函数)
b.函数的分类
根据函数是由谁创建的可以将函数分为:系统函数、自定义函数
1.系统函数 - 由python(系统)创建的函数,例如:print函数、input函数、type函数、max、min等
2.自定义函数 - 由程序员自己创建的函数
c.定义函数(创建函数)
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
def - 关键字;固定语法
函数名 - 由程序员自己命名;
要求:是标识符;不是关键字
规范:见名知义(让别人看到函数名就大概知道这个函数的功能);所有的字母都小写,多个单词之间用下划线隔开;
不使用系统函数名、类名、模块名
() - 固定写法
形参列表 - 以’变量名1, 变量名2, 变量名3,…'的形式存在(这儿变量名的数量可以是任意多个,也可以一个都没有)
形参可以将函数外部的数据传递到函数内部。
定义函数的时候需不需要形参,需要几个形参,就看实现函数的功能需不需要额外的数据,需要几个额外的数据。
: - 固定写法
函数说明文档 - 本质就是多行注释
函数体 - 结构上,和def保持一个缩进的一条或者多条语句(至少一条);
逻辑上,函数体就是实现函数功能的代码