Python入门07循环及常见的数据结构

目录

  • 1 循环的语法结构
  • 2 break和continue的示例
  • 3 可迭代对象
  • 4 列表
  • 5 元组
  • 6 列表和元组的应用场景
  • 7 集合
  • 8 字典
  • 9 生成器

1 循环的语法结构

在Python中,循环是一种控制结构,用于重复执行一段代码,直到满足特定条件。Python中有两种循环结构:for循环和while循环。

  1. for循环:for循环用于遍历可迭代对象(如列表、元组、字典、集合等)中的元素。它的语法结构如下:
for 变量 in 可迭代对象:循环体(要重复执行的代码)

例如,遍历一个列表并打印每个元素:

fruits = ['apple', 'banana', 'orange']
for fruit in fruits:print(fruit)

在这里插入图片描述

  1. while循环:while循环在给定条件为真时重复执行一段代码。它的语法结构如下:
while 条件:循环体(要重复执行的代码)

例如,计数器从0开始,每次循环加1,直到计数器达到5:

counter = 0
while counter < 5:print(counter)counter += 1

在这里插入图片描述

for循环和while循环都可以与breakcontinue语句一起使用,以更好地控制循环的执行。break语句用于提前终止循环,而continue语句用于跳过当前迭代并进入下一次循环。

2 break和continue的示例

breakcontinue 是 Python 中用于控制循环流程的关键字。下面分别给出它们的示例:

  1. break:用于跳出当前循环,不再执行循环体中的剩余代码。

    for i in range(10):if i == 5:breakprint(i)
    

在这里插入图片描述

在这个示例中,循环会遍历 0 到 9 的整数。当 i 等于 5 时,break 语句会被执行,跳出循环,不再打印 i 的值。因此,这个循环只会打印 0 到 4 的整数。

  1. continue:用于跳过当前循环的剩余代码,直接进入下一次循环。

    for i in range(10):if i % 2 == 0:continueprint(i)
    

在这里插入图片描述

在这个示例中,循环会遍历 0 到 9 的整数。当 i 是偶数时,continue 语句会被执行,跳过当前循环的剩余代码,直接进入下一次循环。因此,这个循环只会打印 1 到 9 的奇数。

通过使用 breakcontinue,我们可以更灵活地控制循环的执行流程,以满足不同的需求。

3 可迭代对象

在Python中,可迭代对象(Iterable)是指包含__iter__()方法或__getitem__()方法的对象。这意味着可以对这些对象进行迭代操作,如在for循环中遍历它们的元素。

以下是一些常见的可迭代对象:

  1. 列表(List):例如[1, 2, 3, 4, 5]
  2. 元组(Tuple):例如(1, 2, 3, 4, 5)
  3. 字符串(String):例如'hello, world'
  4. 集合(Set):例如{1, 2, 3, 4, 5}
  5. 字典(Dictionary):例如{'a': 1, 'b': 2, 'c': 3}
  6. 生成器(Generator):例如(x**2 for x in range(5))

可迭代对象允许我们在for循环中轻松地遍历它们的元素,而无需关心底层的实现细节。这使得Python代码更简洁、易读。

4 列表

列表(List)是Python中的一种数据结构,它是一个有序的元素集合,可以包含任意数量的元素。列表中的元素可以是不同类型的数据,如整数、浮点数、字符串、布尔值等。列表是可变的,这意味着我们可以修改列表中的元素,添加或删除元素。

列表使用方括号[]表示,并用逗号,分隔其中的元素。例如:

my_list = [1, 2, 3, 4, 5]

列表具有以下常用操作:

  1. 获取元素:通过索引访问列表中的元素。索引从0开始,负数索引表示从末尾开始计数。例如:

    first_element = my_list[0]  # 获取第一个元素
    last_element = my_list[-1]  # 获取最后一个元素
    
  2. 添加元素:在列表末尾添加一个元素。例如:

    my_list.append(6)  # 在列表末尾添加元素6
    
  3. 插入元素:在指定索引处插入一个元素。例如:

    my_list.insert(1, 7)  # 在索引1处插入元素7
    
  4. 删除元素:从列表中删除指定索引处的元素。例如:

    my_list.pop(1)  # 删除索引1处的元素
    
  5. 修改元素:通过索引修改列表中的元素。例如:

    my_list[0] = 0  # 将索引0处的元素修改为0
    
  6. 列表推导式:使用简洁的语法快速创建新列表。例如:

    squares = [x**2 for x in range(1, 6)]  # 创建一个包含1到5的平方数的新列表
    
  7. 列表排序:对列表的元素进行排序。例如:

    my_list.sort()  # 对列表的元素进行升序排序
    
  8. 列表切片:获取列表的一部分。例如:

    sublist = my_list[1:4]  # 获取索引1到3的元素组成的新列表
    
  9. 列表长度:获取列表中元素的数量。例如:

    length = len(my_list)  # 获取列表的长度
    
  10. 列表遍历:使用for循环遍历列表中的每个元素。例如:

    for element in my_list:print(element)
    

在这里插入图片描述

列表是Python中最常用的数据结构之一,它们在处理数据时非常方便和灵活。

5 元组

元组(Tuple)是 Python 中的一种数据结构,它是一个不可变的、有序的元素集合。元组中的元素可以是任何数据类型,如整数、浮点数、字符串、列表、元组、集合等。元组通常用于存储一组相关或不相关的数据,以便于后续的处理和分析。

元组的创建方式有以下几种:

  1. 使用圆括号 () 创建空元组,然后添加元素:

    my_tuple = ()
    my_tuple = (1, 2, 3, 4, 5)
    
  2. 使用 tuple() 函数创建元组,将多个值作为参数传递给函数:

    my_tuple = tuple()
    my_tuple = tuple([1, 2, 3, 4, 5])
    
  3. 使用列表的 tuple() 方法将列表转换为元组:

    my_list = [1, 2, 3, 4, 5]
    my_tuple = tuple(my_list)
    

元组的主要操作包括:

  1. 获取元组中的元素:使用索引(从 0 开始)或切片操作来获取元组中的元素。例如:

    first_element = my_tuple[0]
    second_element = my_tuple[1]
    third_element = my_tuple[2:]
    
  2. 判断元组是否为空:使用 not 运算符和 len() 函数来判断元组是否为空。例如:

    if not my_tuple:print('The tuple is empty')
    else:print('The tuple is not empty')
    
  3. 获取元组的长度:使用 len() 函数获取元组的长度。例如:

    length = len(my_tuple)
    
  4. 遍历元组:使用 for 循环遍历元组中的所有元素。例如:

    for element in my_tuple:print(element)
    
  5. 连接元组:使用 + 运算符将两个或多个元组连接起来。例如:

    tuple1 = (1, 2, 3)
    tuple2 = (4, 5, 6)
    combined_tuple = tuple1 + tuple2
    

在这里插入图片描述

元组在处理数据时非常有用,尤其是在需要存储和访问有序数据集的场合。与列表相比,元组是不可变的,这意味着一旦创建了元组,就不能修改其内容。这使得元组在某些情况下更安全、更易于处理。

6 列表和元组的应用场景

在Python中,元组和列表都是常用的数据结构,它们有以下区别:

  1. 可变性:列表是可变的,可以修改、添加和删除元素;而元组是不可变的,不能修改、添加或删除元素。
  2. 语法:列表使用方括号[]表示,元组使用括弧()表示。
  3. 性能:由于元组是不可变的,它们在内存中的存储效率较高,而且在处理大量数据时,访问速度也较快。

根据这些区别,我们可以根据实际需求选择使用元组还是列表:

  1. 当需要存储不可变的数据时,使用元组。例如,一个日期(年、月、日)可以表示为一个元组,因为日期是不可变的。

    date = (2022, 10, 1)
    
  2. 当需要存储可变的数据时,使用列表。例如,一个购物车中的商品列表可以表示为一个列表,因为购物车中的商品可以被添加、删除或修改。

    shopping_cart = ['apple', 'banana', 'orange']
    
  3. 当需要对数据进行修改、添加或删除操作时,使用列表。例如,在处理用户输入的数据时,我们可能需要添加、删除或修改数据。

    user_data = ['Alice', 'Bob', 'Charlie']
    user_data.append('David')  # 添加新用户
    user_data.remove('Bob')  # 删除用户
    user_data[0] = 'Alicia'  # 修改用户名
    
  4. 当需要对数据进行快速访问和迭代操作时,使用元组。例如,在处理大量静态数据时,使用元组可以提高性能。

    countries = ('China', 'USA', 'Japan', 'Germany', 'France')
    for country in countries:print(country)
    

总之,根据实际需求和数据的可变性,我们可以选择使用元组或列表来存储和操作数据。

7 集合

集合(Set)是Python中的一种数据结构,它是一个无序且不重复的元素集合。集合中的元素可以是任何可哈希(hashable)的类型,如整数、浮点数、字符串、元组等。集合的主要操作包括添加、删除、检查元素是否存在、计算元素数量等。

集合的创建方式有以下几种:

  1. 使用大括号 {} 创建空集合,然后添加元素:

    my_set = {1, 2, 3, 4, 5}
    
  2. 使用 set() 函数创建空集合,然后添加元素:

    my_set = set()
    my_set.add(1)
    my_set.add(2)
    my_set.add(3)
    my_set.add(4)
    my_set.add(5)
    
  3. 使用集合运算符创建集合,如 |(并集)、&(交集)、-(差集)等:

    set1 = {1, 2, 3, 4, 5}
    set2 = {4, 5, 6, 7, 8}# 并集
    union_set = set1 | set2
    print(union_set)  # {1, 2, 3, 4, 5, 6, 7, 8}# 交集
    intersection_set = set1 & set2
    print(intersection_set)  # {4, 5}# 差集
    difference_set = set1 - set2
    print(difference_set)  # {1, 2, 3}
    

集合的主要操作包括:

  1. 添加元素:使用 add() 方法向集合中添加元素。

    my_set.add(6)
    
  2. 删除元素:使用 remove() 方法从集合中删除指定的元素。如果元素不存在,会引发 KeyError

    my_set.remove(1)
    
  3. 检查元素是否存在:使用 in 关键字或 contains() 方法检查元素是否在集合中。

    if 5 in my_set:print('5 is in the set')
    elif 6 in my_set:print('6 is in the set')
    else:print('Neither 5 nor 6 is in the set')
    
  4. 计算元素数量:使用 len() 函数或 size() 方法获取集合中元素的数量。

    num_elements = len(my_set)
    
  5. 集合运算:使用集合运算符(如 |&- 等)进行集合间的运算。

    union_set = set1 | set2
    intersection_set = set1 & set2
    difference_set = set1 - set2
    

在这里插入图片描述

集合在处理数据时非常有用,尤其是在需要去除重复元素或进行集合运算的场景中。

8 字典

字典(Dictionary)是Python中的一种数据结构,它是一种无序的、可变的、键-值对(key-value)的数据类型。字典中的每个键(key)都是一个唯一的标识符,与之对应的值(value)可以是任何数据类型,如整数、浮点数、字符串、列表、元组、集合等。字典中的键和值之间通过冒号(:)分隔,每个键-值对之间用逗号(,)分隔。

字典的主要操作包括:

  1. 创建字典:使用大括号 {} 创建空字典,然后添加键-值对。例如:

    my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
    
  2. 获取字典中的值:使用键作为索引来获取字典中的值。例如:

    name = my_dict['name']
    age = my_dict.get('age')
    
  3. 修改字典中的值:使用键作为索引来修改字典中的值。例如:

    my_dict['age'] = 31
    
  4. 添加键-值对:使用键作为索引向字典中添加新的键-值对。如果键已经存在,则覆盖原有的值。例如:

    my_dict['gender'] = 'female'
    
  5. 删除键-值对:使用键作为索引从字典中删除指定的键-值对。如果键不存在,会引发 KeyError。例如:

    del my_dict['age']
    
  6. 检查键是否存在:使用 in 关键字或 has_key() 方法检查键是否在字典中。例如:

    if 'name' in my_dict:print('name is in the dictionary')
    elif 'age' in my_dict:print('age is in the dictionary')
    else:print('Neither name nor age is in the dictionary')
    
  7. 获取字典中的所有键:使用 keys() 方法获取字典中的所有键。例如:

    keys = my_dict.keys()
    
  8. 获取字典中的所有值:使用 values() 方法获取字典中的所有值。例如:

    values = my_dict.values()
    
  9. 获取字典中的键-值对:使用 items() 方法获取字典中的所有键-值对。例如:

    items = my_dict.items()
    

在这里插入图片描述

字典在处理数据时非常有用,尤其是在需要存储和检索复杂数据结构的场景中。

9 生成器

生成器(Generator)是一种特殊的迭代器,它允许你创建一个可迭代对象,该对象在每次迭代时动态生成新的值,而不是预先计算所有值并将它们存储在内存中。生成器在处理大量数据或需要按需生成数据的场景中非常有用,因为它们可以节省内存并提高性能。

生成器使用yield关键字来返回一个值,并在下一次调用时暂停执行,直到再次请求下一个值。这使得生成器可以在需要时动态生成值,而不是一次性生成所有值。

以下是一个简单的生成器示例,用于生成前n个平方数:

def square_generator(n):for i in range(1, n+1):yield i**2# 使用生成器
for square in square_generator(5):print(square)

在这里插入图片描述

在这个示例中,square_generator函数是一个生成器,它使用yield关键字返回每个平方数。当我们在for循环中使用生成器时,它会在每次迭代时动态生成下一个平方数,而不是一次性计算所有平方数。这意味着生成器在处理大量数据时可以节省内存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring切面编程

切面编程 代码地址&#xff1a; orbit-hub/spring-boot-samples at master (github.com)https://github.com/orbit-hub/spring-boot-samples/tree/master 切面执行顺序 Spring5以后顺序就一切正常 正常&#xff1a;前置通知目标方法返回通知后置通知 异常: 前置通知目标方…

C++12.4

沙发床的多继承 多继承代码实现沙发床沙发床继承于沙发和床 代码&#xff1a; #include <iostream>using namespace std;//封装 沙发 类 class Sofa { private:string sitting;double *size; public://无参构造函数Sofa() {cout << "Sofa::无参构造函数&quo…

京东运营数据分析(京东数据采集):2023年10月京东护肤行业品牌销售排行榜

鲸参谋监测的京东平台10月份护肤市场销售数据已出炉&#xff01; 鲸参谋数据显示&#xff0c;2023年10月份&#xff0c;京东平台上护肤市场的销量为2000万&#xff0c;环比增长约28%&#xff0c;同比降低约26%&#xff1b;销售额为25亿&#xff0c;环比增长约24%&#xff0c;同…

Java基本数据类型、包装类及拆装箱详解

Java的基本数据类型和对应的包装类是Java语言中处理数据的两个关键概念。基本数据类型提供了简单而高效的方式来存储数据&#xff0c;而包装类使得基本数据类型具有对象的特性。本文将深入探讨基本数据类型与包装类的应用场景及详细描述&#xff0c;并对自动拆箱和装箱的源码实…

了解完Devops,让我们再来看看什么是SRE吧!

SRE SRE 全称是 Site Reliability Engineering&#xff0c;即网站稳定性工程师。最早是由 Google 提出&#xff0c;并且在其工程实践中发扬光大。这个团队设立目的是帮助 Google 生产环境服务运行更稳定、健壮、可靠。不同于中小型规模公司&#xff0c;Google服务于十几亿用户…

SpringBoot+SSM项目实战 苍穹外卖(3)

继续上一节的内容&#xff0c;本节完成菜品管理功能&#xff0c;包括公共字段自动填充、新增菜品、菜品分页查询、删除菜品、修改菜品。 目录 公共字段自动填充新增菜品文件上传实现新增菜品实现 useGeneratedKeys 菜品分页查询删除菜品修改菜品根据id查询菜品实现修改菜品实现…

geemap学习笔记015:下载哨兵2号(Sentinel-2)数据

前言 使用GEE下载数据应该是最常见的功能了&#xff0c;今天就介绍一下如何使用geemap下载哨兵2号(Sentinel-2)数据&#xff0c;分别包括自己画感兴趣&#xff0c;以及利用Assets中的shp文件进行下载。 1 自己画感兴趣下载哨兵2号影像 import geemap import eeMap geemap.M…

金蝶云星空表单插件单据体批量删除,序号自增

文章目录 金蝶云星空表单插件单据体批量删除&#xff0c;序号自增字段标识说明表单插件获取单据体数据包移除物料为空的行其他移除物料为空的行的方式&#xff0c;但是测试不通过&#xff0c;不建议使用序号重新生成测试 金蝶云星空表单插件单据体批量删除&#xff0c;序号自增…

Apache Doris 详细教程(三)

7、监控和报警 Doris 可以使用 Prometheus 和 Grafana 进行监控和采集&#xff0c;官网下载最新版即可。 Prometheus 官网下载&#xff1a;https://prometheus.io/download/ Grafana 官网下载&#xff1a;https://grafana.com/grafana/download Doris 的监控数据通过 FE 和…

B2B公司如何寻找意向客户的联系方式?

在B2B公司的营销过程中&#xff0c;少不了寻找意向客户的阶段&#xff0c;这也是销售过程中非常重要的一步。 很多新人都是拿到客户联系方式&#xff0c;就直接打电话拜访&#xff0c;俗话说不打没有准备的仗&#xff0c;因此在拜访客户之前就应该做好功课&#xff0c;充分了解…

全网最新最全的自动化测试教程:python+pytest接口自动化-请求参数格式的确定

我们在做接口测试之前&#xff0c;先需要根据接口文档或抓包接口数据&#xff0c;搞清楚被测接口的详细内容&#xff0c;其中就包含请求参数的编码格式&#xff0c;从而使用对应的参数格式发送请求。例如某个接口规定的请求主体的编码方式为 application/json&#xff0c;那么在…

医院信息化专业人员必备医院业务运作及管理流程知识(详细)

业务流程是一家医院运作的基础,医院所有业务都需要流程加以驱动。熟知医院各项业务,了解医院管理流程,有利于医院工作人员更好地投入自身岗位,提高工作效率。本文整理了常见医院业务运作及管理流程,仅供参考! 【门诊业务】 一、门诊业务的特点: 1.接诊病人多,就诊时…

Python 接口自动化 —— requests框架

1.前言 Python内置的urllib模块&#xff0c;也可以用于访问网络资源。但是&#xff0c;它用起来比较麻烦&#xff0c;而且&#xff0c;缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。 requests官方文档资料地址&#xff1a;http://cn.python-request…

记录 | ipad上安装ipa文件

目的&#xff1a;在 ipad 上安装 ipa 文件 首先需要在 mac 端安装 itools pro 下载地址&#xff1a;https://www.thinkskysoft.com/itools/ 然后下载 ipa > 需要有签名的&#xff0c;不然安装不了 然后用数据线连接 ipad 和 mac&#xff0c;应用 -> 安装

C语言——深入理解指针(5)

目录 1. sizeof和strlen的对比 1.1 sizeof 1.2 strlen 1.3 sizeof和strlen 的对比 2. 数据和指针题解析 2.1 一维数组 2.2 字符数组 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2,6 2.3 二维数组 3. 指针运算题解析 3.1 例1 3.2 例2 3.3 例3 3.4 例4 3.5 例5 3.6 例…

OpenCV介绍及安装

目录 1.OpenCV简介 2.OpenCV安装 3.检查OpenCV是否安装成功 4.OpenCV模块 5.学习技巧 1.OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个基于开源发行的跨平台计算机视觉库&#xff0c;主要用于图像处理、计算机视觉和机器学习等领域…

干货|水表基础知识大全

第一部分 水表基础知识 第一节 水表的作用 水表:是用来记录流经自来水管道中水量的一种计量器具,也称为计量器具。 1、水表的发展简史 1825年英国的克路斯发明了真正具有仪表特征的平衡罐式水表以来&#xff0c;水表的发展已有近二百年的历史。期间&#xff0c;水表的结构…

目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss

文章目录 前言1.IOU_Loss&#xff08;Intersection over Union Loss&#xff09;2.GIOU_Loss&#xff08;Generalized Intersection over Union Loss&#xff09;3.DIOU_Loss&#xff08;Distance Intersection over Union Loss&#xff09;4.CIOU_Loss&#xff08;Complete In…

行云创新:与德国汽车业交流Catena-X数据空间技术有感

近日&#xff0c;行云创新CEO马洪喜先生受深圳高新投、Plug&Play邀请参加Catena-X技术研讨交流会&#xff0c;与西门子全球汽车生态系统总监Claus CREMERS&#xff0c;大众汽车全球数字化生产及流程负责人Frank GOELLER&#xff0c;宝马全球数字化政策负责人Sebastian SCHL…

【国际会议】2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)

2024年材料科学与机械应用发展国际会议(ICMSMAD 2024) 2024 International Conference on Materials Science and Mechanical Application Development(ICMSMAD 2024) 一、【会议简介】 ​2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)即将在美丽的中国成都盛大召开。这…