当前位置: 首页 > ops >正文

从零开始学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中的五种数据容器有:

  1. list 列表
  2. tuple 元组
  3. str 字符串
  4. set 集合
  5. 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写力扣算法题。

http://www.xdnf.cn/news/13607.html

相关文章:

  • 大三自学笔记:探索Hyperlane框架的心路历程
  • 26-数据结构-顺序表1
  • 机器学习赋能的多尺度材料模拟与催化设计前沿技术
  • ABAP 上传 excel 报表
  • Vue3+TypeScript实现解释器模式
  • 使用 C/C++的OpenCV 裁剪 MP4 视频
  • Kafka 架构原理解析
  • 黑马教程强化day2-3
  • 深度学习破解图形验证码:从原理到99.9%识别率实战
  • Redisson + Lettuce 在 Spring Boot 中的最佳实践方案
  • HINet: Half Instance Normalization Network for Image Restoration论文阅读
  • CardiacNet:从超声心动图视频中学习重建用于心脏病评估的异常
  • Transformer-GRU、Transformer、CNN-GRU、GRU、CNN五模型时序预测对比
  • 视频自动生成字幕原理和自动生成字幕的应用实例
  • 芝麻酱工作创新点分享2——mysql的窗口函数使用
  • oracle表数据误删除恢复(闪回操作)
  • 目标检测我来惹2-SPPNet
  • map()函数
  • Postgresql日常使用
  • 展开说说Android之Glide详解_使用篇
  • 38道Linux命令高频题整理(附答案背诵版)
  • 时序数据库Apache IoTDB核心技术深度解析
  • 每日一博 - JWT 安全实战指南
  • C++11 nullptr:从入门到精通
  • Kafka入门:解锁核心组件,开启消息队列之旅
  • UE5 C++ Rider 编程指南 2: 如何使用Live Template编程实时模板?
  • Lavazza拉瓦萨再度牵手兰博基尼汽车 百年咖啡注入超跑速度
  • 技术赋能——AI社媒矩阵营销工具如何重构社媒矩阵底层架构
  • PDF文件合并、删除特定页面的工具分享
  • Gemini 2.5 Pro 和Claude 3.7 理综物理真题,考研数学真题实战对比,国内直接使用