Python基础入门(2)—— 什么是控制语句、列表、元组和序列?
文章目录
- 01 | 🚄控制语句
- 02 | 🚅列表
- 03 | 🚈元组
- 04 | 🚝序列
- 05 | 🚞习题
A bold attempt is half success.
勇敢的尝试是成功的一半。
前面学习了Python的基本原则、变量、字符串、运算符和数据类型等知识,下面主要记录了Python基础中的控制语句、列表、元组、序列的相关知识
01 | 🚄控制语句
Python的控制语句可以帮助实现条件执行、循环迭代等功能。下面是三种最常用的Python控制语句:
-
if语句:if语句用于执行特定的操作,当满足一个或多个条件时才会执行。if语句由if关键字、条件表达式和语句块组成。
if 条件表达式:代码块1 else:代码块2
如果条件表达式为真,则执行代码块1;否则,执行代码块2。
-
for循环:for循环用于遍历任何序列中的每个元素,例如列表、字符串、元组等。for循环由for关键字、迭代变量、in关键字和序列组成。
for 变量 in 序列:循环体代码
其中,变量用于存储当前迭代的值,而序列指定可迭代的对象。对于每个元素,都将执行循环体代码。
-
while循环:while循环用于重复执行一段代码,直到满足退出条件为止。while循环由while关键字、条件表达式和循环块组成。
while 条件表达式:代码块
只要条件表达式为True,代码块就会重复执行,直到条件表达式为False或者循环被break语句中断。
另外,Python还支持其他控制语句,如try/except等异常处理语句,这些语句的使用能够使程序更健壮、更可靠并且容错性更强,在后面阶段会重点学习一下异常处理这块知识点
02 | 🚅列表
当你需要管理多个元素时,Python的列表(list)是一个非常有用的数据类型。一个列表是一种有序的、可变的、容纳任意数量的Python对象的集合。由于Python支持动态变量类型,一个列表可以包括不同类型的元素,例如数字、字符串和其他列表等。
下面是关于Python列表的一些重要特征和用法:
-
定义列表:使用方括号
[]
定义一个列表。它可以为空或包含一个或多个元素,并用逗号分隔。scores = [90, 80, 70, 60] names = ['John', 'Anna', 'Mike', 'Alice'] empty_list = []
-
访问列表元素:列表中的元素在内部是按照0索引的顺序排列的,即第一个元素的索引为0,第二个元素的索引为1,以此类推。您可以通过方括号([])访问列表中的任何元素。
grades = [85, 92, 78, 90] print(grades[0]) # 输出列表中的第一个元素 print(grades[-1]) # 输出列表中的最后一个元素
-
列表切片:可以使用切片操作符(:)获取列表中的一段子集。切片操作符由起始位置、终止位置和步长组成。
numbers = [1, 2, 3, 4, 5] print(numbers[1:3]) # 输出列表中索引为1和2的元素 print(numbers[:3]) # 输出列表中前三个元素 print(numbers[::2]) # 输出步长为2的所有元素
-
迭代列表:可以使用for循环语句迭代遍历列表中的每个元素。
cities = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'] for city in cities:print(city)
-
修改列表元素:列表是可变(mutable)类型,意味着您可以修改列表中的元素。
fruits = ['apple', 'banana', 'cherry'] fruits[0] = 'orange' # 将第一个元素由'apple'改为'orange' print(fruits) # 输出更改后的列表['orange', 'banana', 'cherry']
-
列表方法:Python列表还提供了许多有用的方法来强化其功能。这些方法包括添加、删除、查找和排序等。
numbers = [1, 2, 3, 4, 5] numbers.append(6) # 在列表末尾追加一个元素 numbers.insert(0, 0) # 在列表开头插入一个元素 numbers.remove(3) # 移除指定元素 numbers.sort() # 对列表进行排序
-
列表长度:使用len()函数获取列表的长度。
animals = ['cat', 'dog', 'fish'] print(len(animals)) # 输出列表长度3
综上所述,Python的列表(list)是一种非常灵活和有用的数据类型。对于处理多个元素的情况,它们提供了许多实用的特性和功能。在日常编程中,适当的使用列表能够有效地减少代码复杂度并提高代码效率。
03 | 🚈元组
在Python中,元组(tuple)与列表(list)类似,也是存储多个项目的容器。但它们之间有一个重要的区别:元组是不可变(immutable)的,意味着在创建后无法对其进行更改。由于这个原因,元组通常用于表示静态数据,如某个对象的固定属性或坐标。
下面是关于Python元组的一些重要特征和用法:
-
定义元组:使用圆括号
()
定义一个元组。可以为空或包含一个或多个元素,并用逗号分隔。coordinates = (3, 5) fruits = ('apple', 'banana', 'cherry') empty_tuple = ()
-
访问元组元素:元组中的元素在内部是按照0索引的顺序排列的,即第一个元素的索引为0,第二个元素的索引为1,以此类推。可以通过方括号
[]
访问元组中的任何元素。coordinate = (3, 5) print(coordinate[0]) # 输出元组中第一个元素 print(coordinate[-1]) # 输出元组中最后一个元素
-
元组切片:可以使用切片操作符
:
获取元组中的一段子集。numbers = (1, 2, 3, 4, 5) print(numbers[1:3]) # 输出元组中索引为1和2的元素 print(numbers[:3]) # 输出元组中前三个元素 print(numbers[::2]) # 输出步长为2的所有元素
-
迭代元组:可以使用for循环语句迭代遍历元组中的每个元素。
cities = ('Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen') for city in cities:print(city)
-
解包元组:可以将元组解包,并将元素分配给变量,以便更方便地访问它们。
coordinate = (3, 5) x, y = coordinate # 分配元组中的第一个和第二个元素到变量x和y print(x) # 输出3 print(y) # 输出5
-
元组方法:元组虽然不可变,但也提供了一些实用的内置方法来处理其内容。
numbers = (1, 2, 3, 4, 5) print(numbers.index(3)) # 查找元组中首次出现3的位置 print(numbers.count(2)) # 统计元组中值为2的元素个数
-
元组作为返回值:元组适合作为函数的返回值类型,因为它们可以容易地返回多个对象。
def square_and_cube(x):return x**2, x**3result = square_and_cube(2) print(result) # 输出元组(4, 8) squared, cubed = result print(squared, cubed) # 输出4, 8
综上所述,Python的元组(tuple)是一种不可变类型的数据容器。虽然它们与列表相比在灵活性和易用性方面受到了限制,但它们可以提供更好的安全性和性能优化等方面的保障。在处理静态数据和返回多个值时,元组通常是一种很好的选择。
04 | 🚝序列
在Python中,序列(sequence)是包含一组有序元素的数据类型。在这个概念下,Python提供了三种内置序列类型:字符串(str)、列表(list)和元组(tuple),它们都支持常见的序列操作。
以下是关于Python序列的一些重要特征和用法:
-
索引:序列中的元素按照从左到右的顺序排列,并被分配一个唯一的索引号(从0开始)。您可以通过方括号
[]
访问序列中的任何元素。str = 'Hello, World!' lst = [10, 20, 30, 40] tup = (3, 5, 7, 9)print(str[1]) # 输出'e' print(lst[2]) # 输出30 print(tup[-1]) # 输出9
-
切片:可以使用切片操作符
:
获取序列中的一段子集。切片操作返回一个新的序列,而不改变原有的序列。str = 'Hello, World!' lst = [10, 20, 30, 40] tup = (3, 5, 7, 9)print(str[1:5]) # 输出'ello' print(lst[::2]) # 输出[10, 30] print(tup[:-2]) # 输出(3, 5)
-
求长度:可以使用函数
len()
来计算序列中元素的数量。str = 'Hello, World!' lst = [10, 20, 30, 40] tup = (3, 5, 7, 9)print(len(str)) # 输出13 print(len(lst)) # 输出4 print(len(tup)) # 输出4
-
迭代序列:可以使用for循环语句遍历序列中的每个元素。
tr = 'Hello, World!' lst = [10, 20, 30, 40] tup = (3, 5, 7, 9)for char in str:print(char)for num in lst:print(num)for val in tup:print(val)
-
拼接序列:可以使用加号
+
运算符将两个序列(相同类型)合并为一个新序列。str1 = 'Hello' str2 = ', World!' lst1 = [10, 20, 30] lst2 = [40, 50, 60]new_str = str1 + str2 new_lst = lst1 + lst2print(new_str) # 输出'Hello, World!' print(new_lst) # 输出[10, 20, 30, 40, 50, 60]
-
乘法操作:可以使用乘法
*
运算符重复序列中的元素多次,并生成一个新序列。str1 = 'Hello' lst1 = [1, 2, 3]new_str = str1 * 3 new_lst = lst1 * 2print(new_str) # 输出'HelloHelloHello' print(new_lst) # 输出[1, 2, 3, 1, 2, 3]
-
成员资格:可以使用运算符
in
和not in
来检查某个值是否为序列的元素。str = 'Hello, World!' lst = [10, 20, 30, 40] tup = (3, 5, 7, 9)print('H' in str) # 输出True print(25 not in lst) # 输出True print(7 in tup) # 输出True
综上所述,Python的序列(sequence)是一种有序元素的数据类型。在Python中,字符串(str)、列表(list)和元组(tuple)都属于序列类型,它们支持常见的序列操作,如索引、切片、长度计算、迭代、拼接、重复、成员资格等。这些基本操作可以帮助轻松地处理和操作各种数据结构,从而提高生产效率。
05 | 🚞习题
辅导员要到学生宿舍走访,学生宿舍管理数据库中有一表如下,现将表中的姓名列删除形成新表,要求不能出现重复元组(行)。编写程序,用序列和集合实现这一过程,从而获得需要走访的宿舍地址(楼栋和宿舍号)。
姓名 | 宿舍楼 | 宿舍号 |
---|---|---|
小右 | 白虎楼 | 201 |
小左 | 青龙楼 | 202 |
小北 | 朱雀楼 | 203 |
小南 | 玄武楼 | 204 |
下面是使用序列和集合实现的代码:
# 原始表格
data = [("小西", "1号楼", "201"), ("小东", "2号楼", "202")]# 删除姓名列
new_data = [(x[1], x[2]) for x in data]# 利用集合去重
deduped_data = set(new_data)# 输出需要走访的宿舍地址
for item in deduped_data:print(item[0], item[1])
代码的实现流程如下:
-
首先定义了一个原始表格,其中每行是一个三元组,分别表示姓名、楼栋和宿舍号。
-
然后用一个列表推导式,将原始表格中的姓名列去除,形成一个新的二元组序列。
-
接着利用 Python 的集合类型,将新的二元组序列转换成一个集合,从而去除了其中的重复元素。
-
最后,遍历这个集合,输出需要走访的宿舍地址。
相关文章:
Python基础入门(2)—— 什么是控制语句、列表、元组和序列?
文章目录 01 | 🚄控制语句02 | 🚅列表03 | 🚈元组04 | 🚝序列05 | 🚞习题 A bold attempt is half success. 勇敢的尝试是成功的一半。 前面学习了Python的基本原则、变量、字符串、运算符和数据类型等知识,…...
计算机专业大一的一些学习规划建议!
大家好,我是小北。 五一嗖的一下就过啦~ 对于还在上学的同学五一一过基本上意味着这学期过半了,很多大一、大二的同学会有专业分流、转专业等事情。 尤其是大二的时候,你会发现身边有些同学都加入各种实验室了,有忙着打ACM、学生…...
万万没想到在生产环境翻车了,之前以为很熟悉 CountDownLatch
前言 需求背景 具体实现 解决方案 总结 前言 之前我们分享了CountDownLatch的使用。这是一个用来控制并发流程的同步工具,主要作用是为了等待多个线程同时完成任务后,在进行主线程任务。然而,在生产环境中,我们万万没想到会…...
Springboot整合Jasypt实战
Springboot整合Jasypt实战 引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version> </dependency>配置jasypt # 配置jasypt相关信息…...
计算机网络笔记:DNS域名解析过程
基本概念 DNS是域名系统(Domain Name System)的缩写,也是TCP/IP网络中的一个协议。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但计算机之间只能互相认识IP地址,域名和IP地址之间的转…...
C语言函数大全-- s 开头的函数(4)
C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(4) 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意: strdup() 函数返回指向新分配的内存空间…...
Linux常见指令 (2)
Linux常见指令 ⑵ 补充man描述:用法:例子 echo描述:用法:例子 echo 字符串例子 echo 字符串 > 文件例子 追加重定向(>>)例子 输出重定向(>)来创建文件 && (>)来清空文件 cat描述:用法:例子 cat && cat 文件补充:例子 cat 文件 && cat &…...
shell脚本4
字符串变量 格式介绍:单引号 varabc 双引号 var"abc" 不使用引号 varabc 区别:单引号,原样输出,不会解析里面的变量 双引号,会解析变量,并且可以使用子双引号,需要转…...
递归思路讲解
最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不…...
基于R语言APSIM模型高级应用及批量模拟
目录 专题一 APSIM模型应用与R语言数据清洗 专题二 APSIM气象文件准备与R语言融合应用 专题三 APSIM模型的物候发育和光合生产模块 专题四 APSIM物质分配与产量模拟 专题五 APSIM土壤水平衡模块 专题六 APSIM土壤碳、氮平衡模块 专题七 APSIM农田管理模块与情景模拟 专…...
Hyperf中的其它事项
Hyperf中的其它事项 关于 Hyperf 其它的内容我们就不多说了,毕竟框架这东西用得多了自然也就熟悉了。最重要的是——我的水平还不足以去深入地分析这个框架! 好吧,其它的功能大家可以去官方文档详细了解,毕竟国人自己做的框架&a…...
【技术选型】Elasticsearch 和Solr那个香?
我们为什么在这里?我存在的目的是什么?我应该运动还是休息并节省能量?早起上班或晚起并整夜工作?我应该将炸薯条和番茄酱或蛋黄酱一起吃吗? 这些都是古老的问题,可能有也可能没有答案。其中一些是非常困难或…...
4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....
说一下我面试别人时候的思路 反过来理解,就是面试时候应该注意哪些东西;用加粗部分标注了 一般面试分为这么几个部分: 一、自我介绍 这部分一般人喜欢讲很多,其实没必要。大约5分钟内说清楚自己的职业经历,自己的核…...
数据恢复软件EasyRecovery16下载安装步骤教程
EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…...
Springboot 自定义缓存配置 CacheManager 及redis集成
目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题,Springboot提供了统一的接口抽象与缓存管理器,可集成多种缓存类型,如 Co…...
JS 中七个改变原数组的方法
目录 一、push 二、pop 三、unshift 四、shift 五、splice 六、sort 七、reverse 一、push 在数组的尾部添加元素,并返回新的长度。 let arr [1] arr.push(2) console.log(arr) // [1, 2] 二、pop 删除数组最后面一个元素、并返回删除的元素。 let arr [1, …...
【笔试强训选择题】Day7.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…...
Vue电商项目--axios二次封装
postman测试接口 刚刚经过postman工具测试,发现接口果然发生了改变。 新的接口为http://gmall-h5-api.atguigu.cn 如果服务器返回的数据code字段200,代表服务器返回数据成功 整个项目,接口前缀都有/api字样 axios二次封装 XmlHttpRequ…...
人生四维度
人生四维度 不是有钱了就成功,你知道;人生的成功不止一种,你也知道。但成功还有哪种?你知道吗? 如果把人生的体验展开,我们可以得到四个维度,高度、深度、宽度和温度。 财富、权力、影响力 构…...
Python 调用 MessageBeep 播放系统音效
Python 调用 MessageBeep 播放 Windows 系统提示声音 Windows API 函数 "MessageBeep" 介绍 "Windows API MessageBeep"是一个用于发出系统提示音效的函数。它可以向用户发出一种预定义的声音,以指示事件的发生或某个条件的满足。例如…...
废物,我TMD一个985却斗不过专科生(大厂自动化测试2年被裁)
前言 看到标题,可能很多读者朋友恐怕又要骂我了,985这个特殊的字眼也确实异常晃眼,实际上现在985,211也越来越多,它能代表你能够进入到更高的平台,拿到“高级工厂”的入场券,但并不意味着你会成…...
p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 必要基础知识点: 内外网简单知识内网 1 和内网 2 通信问题正向反向协议通…...
第三十二章 Unity Mecanim动画系统(上)
在上一章节中,我们介绍了Unity的旧版动画系统,本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的,只不过它给我们提供了一个可视化的窗口来编辑动…...
第二章 集合
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
这一篇Databinding应该可以帮助迅速上手吧
Databinding使用篇(迅速上手) 使用前需要在模块级别的build.gradle里面的android闭包里添加: dataBinding{enabled true}接着在layout文件中按下Alt 回车, 将布局转换成data binding layout即可,此时编译就会生成对…...
【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制
源码下载:https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码,免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览,你可以在后台->安装扩展功能上传安装插件,在代码调整中点击刷…...
cout源码浅析
目录 cout源码浅析 那么对于没有定义在这之中的要怎么办呢? 实际使用 结语 首先来看我从cplusplus中截取的这张图: 注意最下面这一行字。cout其实是ostream的一个标准对象object。而上面则演示了一些继承关系。 好的,理解了之后…...
发送Ajax get请求详解
发送AJAX get请求,前端代码: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>ajax get请求</title> </head> <body> <script type"text/java…...
SQL语句
创建及删除数据库和表 CREATE DATABASE 数据库名; CREATE DATABASE school; 创建新的表 CREATE TABLE 表名(字段1 数据类型,字段2 数据类型[,...] [,PRIMARY KEY (主键名)]); #主键一般选择能代表唯一性的字段,不允许取空值(NULL),值也不允许重复&…...
Mysql 学习(八)单表查询方法二
复杂查询 上一节说了5种访问类型的查询,这一节就来说说关于这些比较复杂的查询 情况一:多个二级索引查询 sql:SELECT * FROM index_value_table WHERE value1 abc AND value2 > 1000;搜索条件: value1 等于 abcvalue2 大于…...
有哪些网站做团购最好/南宁seo费用服务
之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest、nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架。本文想针对测试中一种很常见的测试场景,即参数化测试,继续聊聊关于测试的话题,并尝试将这…...
平面设计零基础难学吗/网站内部链接优化方法
很久之前就对jQuery animate的实现非常感兴趣,不过前段时间很忙,直到前几天端午假期才有时间去研究。 jQuery.animate的每种动画过渡效果都是通过easing函数实现的。jQuery1.4.2中就预置了两个这样的函数: easing: {linear: function( p, n, …...
网站地图怎么做的/建站之星官方网站
给空格子上下左右的互换操作,问最后是怎样的 注意一行的最后一个若是空格,需要自己加注意读取时 操作可能分好多行,一定要读取到 0 为止 1 #include <iostream>2 #include <cstring>3 using namespace std;4 char map[50][50],o…...
卡片式主题wordpress/目前推广平台都有哪些
阿里云函数 实现企业微信消息 回调地址验证 getRawBody(req, async function (err, body) {// resp.send(Hello)// 企业微信消息回调地验证if (req.method GET) {var sVerifyMsgSig req.queries.msg_signature;var sVerifyTimeStamp req.queries.timestamp;var sVerifyNonce…...
电脑本地网站建设/全媒体运营师报考条件
Fuchsia 起航 Debian sudo apt-get install build-essential curl git python unzip 复制代码 下载源码 curl -s "https://fuchsia.googlesource.com/scripts//master/bootstrap?formatTEXT" | base64 --decode | bash 复制代码 配置一下环境变量 cp .jiri_root/bin…...
二手书网站建设日程表/天津seo托管
关键词 并行开发 代码复用 关注点分离经典的MVC架构模式MVC架构模式是经典设计模式中的经典,是一种编程的方法论。具有高度抽象的特征,经典MVC用简单的定义体现出解决复杂通用问题的办法,只有不断思考和体会才能用来解决不同情况下程序设计所…...