从零开始学Python(2)——流程控制语句和五种容器
从零开始学Python(2)——流程控制语句和五种容器
文章目录
- 从零开始学Python(2)——流程控制语句和五种容器
- 前言
- 流程控制语句
- if语句
- for循环
- while循环
- break语句和continue语句
- 关于python的格式
- 五种数据容器
- 列表
- 一些方法
- 数值列表
- 列表解析
- 元组
- 集合
- 字典
- 结语
前言
学习python的第二天,今天赶一赶进度。
贴一下我觉得很好的一个专栏Python手把手教程_安然无虞的博客-CSDN博客。这个专栏总结了大部分常见的python知识点,比我用的书上的全面。
今天还是照着书学,参考专栏和ds,只记录一些关键点。
流程控制语句
if语句
if 条件:操作if 条件:操作
else:操作if:
elif:
elif:
else:嵌套
使用and表示条件的并(对应c++ &&),使用or表示条件的交(||)
使用in和not in表示特定值是否在列表中
同样有==,!=,>=,<=等运算符
for循环
python支持的for循环格式:
for 临时变量名 in 列表名:循环体语句循环体语句
结束循环后的语句
这种循环类似现代c++支持的列表循环for xx:xx
所有使用了一层水平缩进的代码块都被视为循环体!这点非常的有意思,即水平上的格式会影响解释器理解代码,因而对水平缩进要特别注意
标准的一层缩进是4个空格
while循环
和c++类似
while 条件:循环体
break语句和continue语句
和c++基本一致
关于python的格式
行长:一般设置为79字符
空行:应该有利于阅读
缩进:需要特别注意
按照PEP 8标准写python代码
五种数据容器
Python中的五种数据容器有:
- list 列表
- tuple 元组
- str 字符串
- set 集合
- dict 字典
字符串第一篇博客已经学过,这里我们学习一下另外四种数据容器
列表
有序可变
我的初步理解:列表就是没有特定变量类型的数组
列表内的元素种类可以不相同!!!
支持随机访问,显然逻辑结构是线性的,物理结构是动态数组(类似c++ vector)
索引0是第一个元素,索引-1对应列表最后一个元素
.append(新元素)在列表尾添加元素;.insert(索引,新元素)在指定位置插入元素
del 列表名[索引]删除指定位置的元素,和对象.方法语法不同
.pop()方法弹出最后一个元素,可以保存到某个变量中
可以.pop(索引)弹出指定元素
.remove(元素名)删除指定名称的元素
插入和删除等操作涉及到元素的移动,这些操作都是线性时间复杂度On的
一些方法
永久排序.sort(),默认从小到大,使用.sort(reverse=True)从大到小排序
临时排序sorted(列表名),注意不是方法
.reverse()逆序
len()获取长度
切片:创立一个列表的浅拷贝
语法:新列表名=列表名[起始索引:终止索引:步长],步长±代表方向
数值列表
range()函数:range(起始索引,终止索引,步长) 注意终止索引不算在range内
list()函数:生成一个列表,配合range函数创建一个数值列表
对于数值列表,有一些函数:min,max,sum
列表解析
快速创建列表的方法
语法:[expression for item in iterable if condition]
更多方法可查看博客
注意数组越界问题
元组
有序不可变
元组和列表类似,最大的区别就是元组本身是不可变的,即创建元组时有几个元素,元组就有几个元素
元组用圆括号标识
元组元素同样可以不同
元组内的元素可能可以修改,如某个可变列表是元组的元素,那么这个可变列表是可以修改的(元组创建了对对象的常引用,但是对象可能是可变的)
想要修改元组,就要对元组重新赋值,我理解为创建新的元组
注意, 想让只有一个元素成为元组一定要在后面加上逗号, 否则不认为是元组
集合
无序不可重复
注意: Python的集合(set)可以容纳任何可哈希(hashable)的数据类型的元素(key),例如数字、字符串、元组等。不可哈希(unhashable)的数据类型,例如列表、字典、集合等,则不能作为集合的元素(key).。这是因为集合的元素(key)需要能够进行哈希运算,以便于进行快速的查找和去重。
字典
key-value关系
:分开key和value, ,分开不同的键值对,花括号括起整个字典,方括号访问或增添修改单独的键值对
方法
删除键值对del
遍历字典,遍历所有的键.keys(),遍历所有的值.values(),
嵌套:列表嵌套字典,字典嵌套列表,字典嵌套字典等
结语
快速通读了书的前7章,除了用户输入没看,剩下的都略读了一遍,算是对python有了一个粗浅的认识。
这部分没怎么实际写代码,python代码格式和c++不同,还需要多写代码形成肌肉记忆。最近也在尝试用python写力扣算法题。