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

Python基础入门(2)—— 什么是控制语句、列表、元组和序列?

文章目录

  • 01 | 🚄控制语句
  • 02 | 🚅列表
  • 03 | 🚈元组
  • 04 | 🚝序列
  • 05 | 🚞习题

A bold attempt is half success.
勇敢的尝试是成功的一半。

前面学习了Python的基本原则、变量、字符串、运算符和数据类型等知识,下面主要记录了Python基础中的控制语句、列表、元组、序列的相关知识

01 | 🚄控制语句

在这里插入图片描述

Python的控制语句可以帮助实现条件执行、循环迭代等功能。下面是三种最常用的Python控制语句:

  1. if语句:if语句用于执行特定的操作,当满足一个或多个条件时才会执行。if语句由if关键字、条件表达式和语句块组成。

    if 条件表达式:代码块1
    else:代码块2
    

    如果条件表达式为真,则执行代码块1;否则,执行代码块2。

  2. for循环:for循环用于遍历任何序列中的每个元素,例如列表、字符串、元组等。for循环由for关键字、迭代变量、in关键字和序列组成。

    for 变量 in 序列:循环体代码
    

    其中,变量用于存储当前迭代的值,而序列指定可迭代的对象。对于每个元素,都将执行循环体代码。

  3. while循环:while循环用于重复执行一段代码,直到满足退出条件为止。while循环由while关键字、条件表达式和循环块组成。

    while 条件表达式:代码块
    

    只要条件表达式为True,代码块就会重复执行,直到条件表达式为False或者循环被break语句中断。
    另外,Python还支持其他控制语句,如try/except等异常处理语句,这些语句的使用能够使程序更健壮、更可靠并且容错性更强,在后面阶段会重点学习一下异常处理这块知识点

02 | 🚅列表

在这里插入图片描述

当你需要管理多个元素时,Python的列表(list)是一个非常有用的数据类型。一个列表是一种有序的、可变的、容纳任意数量的Python对象的集合。由于Python支持动态变量类型,一个列表可以包括不同类型的元素,例如数字、字符串和其他列表等。

下面是关于Python列表的一些重要特征和用法:

  1. 定义列表:使用方括号[]定义一个列表。它可以为空或包含一个或多个元素,并用逗号分隔。

    scores = [90, 80, 70, 60]
    names = ['John', 'Anna', 'Mike', 'Alice']
    empty_list = []
    
  2. 访问列表元素:列表中的元素在内部是按照0索引的顺序排列的,即第一个元素的索引为0,第二个元素的索引为1,以此类推。您可以通过方括号([])访问列表中的任何元素。

    grades = [85, 92, 78, 90]
    print(grades[0])   # 输出列表中的第一个元素
    print(grades[-1])  # 输出列表中的最后一个元素
    
  3. 列表切片:可以使用切片操作符(:)获取列表中的一段子集。切片操作符由起始位置、终止位置和步长组成。

    numbers = [1, 2, 3, 4, 5]
    print(numbers[1:3])     # 输出列表中索引为1和2的元素
    print(numbers[:3])      # 输出列表中前三个元素
    print(numbers[::2])     # 输出步长为2的所有元素
    
  4. 迭代列表:可以使用for循环语句迭代遍历列表中的每个元素。

    cities = ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
    for city in cities:print(city)
    
  5. 修改列表元素:列表是可变(mutable)类型,意味着您可以修改列表中的元素。

    fruits = ['apple', 'banana', 'cherry']
    fruits[0] = 'orange'   # 将第一个元素由'apple'改为'orange'
    print(fruits)   # 输出更改后的列表['orange', 'banana', 'cherry']
    
  6. 列表方法:Python列表还提供了许多有用的方法来强化其功能。这些方法包括添加、删除、查找和排序等。

    numbers = [1, 2, 3, 4, 5]
    numbers.append(6)        # 在列表末尾追加一个元素
    numbers.insert(0, 0)    # 在列表开头插入一个元素
    numbers.remove(3)        # 移除指定元素
    numbers.sort()           # 对列表进行排序
    
  7. 列表长度:使用len()函数获取列表的长度。

    animals = ['cat', 'dog', 'fish']
    print(len(animals))   # 输出列表长度3
    

综上所述,Python的列表(list)是一种非常灵活和有用的数据类型。对于处理多个元素的情况,它们提供了许多实用的特性和功能。在日常编程中,适当的使用列表能够有效地减少代码复杂度并提高代码效率。

03 | 🚈元组

在这里插入图片描述

在Python中,元组(tuple)与列表(list)类似,也是存储多个项目的容器。但它们之间有一个重要的区别:元组是不可变(immutable)的,意味着在创建后无法对其进行更改。由于这个原因,元组通常用于表示静态数据,如某个对象的固定属性或坐标。

下面是关于Python元组的一些重要特征和用法:

  1. 定义元组:使用圆括号()定义一个元组。可以为空或包含一个或多个元素,并用逗号分隔。

    coordinates = (3, 5)
    fruits = ('apple', 'banana', 'cherry')
    empty_tuple = ()
    
  2. 访问元组元素:元组中的元素在内部是按照0索引的顺序排列的,即第一个元素的索引为0,第二个元素的索引为1,以此类推。可以通过方括号[]访问元组中的任何元素。

    coordinate = (3, 5)
    print(coordinate[0])    # 输出元组中第一个元素
    print(coordinate[-1])   # 输出元组中最后一个元素
    
  3. 元组切片:可以使用切片操作符:获取元组中的一段子集。

    numbers = (1, 2, 3, 4, 5)
    print(numbers[1:3])     # 输出元组中索引为1和2的元素
    print(numbers[:3])      # 输出元组中前三个元素
    print(numbers[::2])     # 输出步长为2的所有元素
    
  4. 迭代元组:可以使用for循环语句迭代遍历元组中的每个元素。

    cities = ('Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen')
    for city in cities:print(city)
    
  5. 解包元组:可以将元组解包,并将元素分配给变量,以便更方便地访问它们。

    coordinate = (3, 5)
    x, y = coordinate   # 分配元组中的第一个和第二个元素到变量x和y
    print(x)            # 输出3
    print(y)            # 输出5
    
  6. 元组方法:元组虽然不可变,但也提供了一些实用的内置方法来处理其内容。

    numbers = (1, 2, 3, 4, 5)
    print(numbers.index(3))   # 查找元组中首次出现3的位置
    print(numbers.count(2))   # 统计元组中值为2的元素个数
    
  7. 元组作为返回值:元组适合作为函数的返回值类型,因为它们可以容易地返回多个对象。

    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序列的一些重要特征和用法:

  1. 索引:序列中的元素按照从左到右的顺序排列,并被分配一个唯一的索引号(从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
    
  2. 切片:可以使用切片操作符:获取序列中的一段子集。切片操作返回一个新的序列,而不改变原有的序列。

    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)
    
  3. 求长度:可以使用函数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
    
  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)
    
  5. 拼接序列:可以使用加号+运算符将两个序列(相同类型)合并为一个新序列。

    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]
    
  6. 乘法操作:可以使用乘法*运算符重复序列中的元素多次,并生成一个新序列。

    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]
    
  7. 成员资格:可以使用运算符innot 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的基本原则、变量、字符串、运算符和数据类型等知识&#xff0c…...

计算机专业大一的一些学习规划建议!

大家好,我是小北。 五一嗖的一下就过啦~ 对于还在上学的同学五一一过基本上意味着这学期过半了,很多大一、大二的同学会有专业分流、转专业等事情。 尤其是大二的时候,你会发现身边有些同学都加入各种实验室了,有忙着打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是域名系统&#xff08;Domain Name System&#xff09;的缩写&#xff0c;也是TCP/IP网络中的一个协议。在Internet上域名与IP地址之间是一一对应的&#xff0c;域名虽然便于人们记忆&#xff0c;但计算机之间只能互相认识IP地址&#xff0c;域名和IP地址之间的转…...

C语言函数大全-- s 开头的函数(4)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数&#xff08;4&#xff09; 1. strdup 1.1 函数说明 函数声明函数功能char * strdup(const char *s);用于将一个以 NULL 结尾的字符串复制到新分配的内存空间中 注意&#xff1a; strdup() 函数返回指向新分配的内存空间…...

Linux常见指令 (2)

Linux常见指令 ⑵ 补充man描述:用法:例子 echo描述:用法:例子 echo 字符串例子 echo 字符串 > 文件例子 追加重定向(>>)例子 输出重定向(>)来创建文件 && (>)来清空文件 cat描述:用法:例子 cat && cat 文件补充:例子 cat 文件 && cat &…...

shell脚本4

字符串变量 格式介绍&#xff1a;单引号 varabc 双引号 var"abc" 不使用引号 varabc 区别&#xff1a;单引号&#xff0c;原样输出&#xff0c;不会解析里面的变量 双引号&#xff0c;会解析变量&#xff0c;并且可以使用子双引号&#xff0c;需要转…...

递归思路讲解

最近刷到了树这一模块的算法题&#xff0c;树相关的算法题几乎都是用递归来实现的&#xff0c;但递归的思路却有点抽象&#xff0c;每次遇到递归&#xff0c;都是通过递归来深度或广度地遍历树&#xff0c;但对于递归遍历树的遍历路线&#xff0c;却有点抽象难懂&#xff0c;不…...

基于R语言APSIM模型高级应用及批量模拟

目录 专题一 APSIM模型应用与R语言数据清洗 专题二 APSIM气象文件准备与R语言融合应用 专题三 APSIM模型的物候发育和光合生产模块 专题四 APSIM物质分配与产量模拟 专题五 APSIM土壤水平衡模块 专题六 APSIM土壤碳、氮平衡模块 专题七 APSIM农田管理模块与情景模拟 专…...

Hyperf中的其它事项

Hyperf中的其它事项 关于 Hyperf 其它的内容我们就不多说了&#xff0c;毕竟框架这东西用得多了自然也就熟悉了。最重要的是——我的水平还不足以去深入地分析这个框架&#xff01; 好吧&#xff0c;其它的功能大家可以去官方文档详细了解&#xff0c;毕竟国人自己做的框架&a…...

【技术选型】Elasticsearch 和Solr那个香?

我们为什么在这里&#xff1f;我存在的目的是什么&#xff1f;我应该运动还是休息并节省能量&#xff1f;早起上班或晚起并整夜工作&#xff1f;我应该将炸薯条和番茄酱或蛋黄酱一起吃吗&#xff1f; 这些都是古老的问题&#xff0c;可能有也可能没有答案。其中一些是非常困难或…...

4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....

说一下我面试别人时候的思路 反过来理解&#xff0c;就是面试时候应该注意哪些东西&#xff1b;用加粗部分标注了 一般面试分为这么几个部分&#xff1a; 一、自我介绍 这部分一般人喜欢讲很多&#xff0c;其实没必要。大约5分钟内说清楚自己的职业经历&#xff0c;自己的核…...

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件&#xff0c;软件提供了向导式的操作向导&#xff0c;可以有效地恢复电脑或者移动存储设备中丢失的各种文件&#xff0c;包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来&#xff0c;大家期盼许久的EasyRecover…...

Springboot 自定义缓存配置 CacheManager 及redis集成

目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题&#xff0c;Springboot提供了统一的接口抽象与缓存管理器&#xff0c;可集成多种缓存类型&#xff0c;如 Co…...

JS 中七个改变原数组的方法

目录 一、push 二、pop 三、unshift 四、shift 五、splice 六、sort 七、reverse 一、push 在数组的尾部添加元素&#xff0c;并返回新的长度。 let arr [1] arr.push(2) console.log(arr) // [1, 2] 二、pop 删除数组最后面一个元素、并返回删除的元素。 let arr [1, …...

【笔试强训选择题】Day7.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01; 文章目录…...

Vue电商项目--axios二次封装

postman测试接口 刚刚经过postman工具测试&#xff0c;发现接口果然发生了改变。 新的接口为http://gmall-h5-api.atguigu.cn 如果服务器返回的数据code字段200&#xff0c;代表服务器返回数据成功 整个项目&#xff0c;接口前缀都有/api字样 axios二次封装 XmlHttpRequ…...

人生四维度

人生四维度 不是有钱了就成功&#xff0c;你知道&#xff1b;人生的成功不止一种&#xff0c;你也知道。但成功还有哪种&#xff1f;你知道吗&#xff1f; 如果把人生的体验展开&#xff0c;我们可以得到四个维度&#xff0c;高度、深度、宽度和温度。 财富、权力、影响力 构…...

Python 调用 MessageBeep 播放系统音效

Python 调用 MessageBeep 播放 Windows 系统提示声音 Windows API 函数 "MessageBeep" 介绍 "Windows API MessageBeep"是一个用于发出系统提示音效的函数。它可以向用户发出一种预定义的声音&#xff0c;以指示事件的发生或某个条件的满足。例如&#xf…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...