python的列表和元组别再傻傻分不清啦


目录

什么是下标:

正数索引:正数索引从左到右,从 0 开始。

负数索引:负数索引从右到左,从 -1 开始。

切片(slice):除了单个元素,Python还支持通过切片访问序列的子集。

索引越界:如果尝试访问一个不存在的索引,Python会抛出 IndexError 异常。

总结一下子吧:

什么是列表:

列表的定义语法:

 列表有哪些特点呢?

 列表的常见操作:

访问列表元素

 修改列表元素

添加元素

删除元素

查找元素

什么是元组: 

元组的特点:​编辑

元组的常见操作:

访问元组元素:

 2. 元组的切片

3. 元组的遍历 

元组与列表有什么区别:

1. 可变性

2. 语法

3. 性能


什么是下标:

在学习之前,我们先了解一下什么是下标:

在Python中,下标索引(也称为索引)用于访问序列类型(如字符串、列表、元组等)中的单个元素。Python的索引从 0 开始,即第一个元素的索引是 0,第二个元素的索引是 1,依此类推。此外,Python还支持负数索引,从序列的末尾开始计数,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。

正数索引:正数索引从左到右,从 0 开始。

my_list = [10, 20, 30, 40, 50]# 访问第一个元素
print(my_list[0])  # 输出: 10# 访问第三个元素
print(my_list[2])  # 输出: 30

负数索引:负数索引从右到左,从 -1 开始。

my_list = [10, 20, 30, 40, 50]# 访问最后一个元素
print(my_list[-1])  # 输出: 50# 访问倒数第二个元素
print(my_list[-2])  # 输出: 40

切片(slice):除了单个元素,Python还支持通过切片访问序列的子集。

切片的语法是 [start:stop:step]

  • start:起始索引(包含)。

  • stop:结束索引(不包含)。

  • step:步长(可选,默认为1)。

    my_list = [10, 20, 30, 40, 50]# 获取索引1到3的元素(不包含索引3)
    print(my_list[1:3])  # 输出: [20, 30]# 获取从开始到索引3的元素
    print(my_list[:3])   # 输出: [10, 20, 30]# 获取从索引2到末尾的元素
    print(my_list[2:])   # 输出: [30, 40, 50]# 使用步长2
    print(my_list[::2])  # 输出: [10, 30, 50]# 反转列表
    print(my_list[::-1]) # 输出: [50, 40, 30, 20, 10]

    索引越界:如果尝试访问一个不存在的索引,Python会抛出 IndexError 异常。

    my_list = [10, 20, 30]# 尝试访问不存在的索引
    print(my_list[3])  # 报错: IndexError: list index out of range

    总结一下子吧:

  • 下标索引从 0 开始。

  • 负数索引从 -1 开始,表示从末尾开始计数。

  • 切片 [start:stop:step] 可以获取子序列。

  • 索引越界会抛出 IndexError


    索引是从0开始的,就先我们零基础的小白,从0到1的过程。


    什么是列表:

在Python中,**列表(List)**是一种有序的、可变的序列类型,用于存储一组元素。列表用方括号 [] 定义,元素之间用逗号分隔。列表中的元素可以是任意类型(如整数、字符串、布尔值、甚至其他列表等),并且同一个列表中的元素可以是不同类型的。

列表的定义语法:

# 定义一个空列表
empty_list = []# 定义一个包含整数的列表
numbers = [1, 2, 3, 4, 5]# 定义一个包含不同类型元素的列表
mixed_list = [1, "Hello", 3.14, True]# 定义一个嵌套列表(列表中的元素也是列表)
nested_list = [[1, 2], [3, 4], [5, 6]]

 列表有哪些特点呢?

  1. 有序性:列表中的元素是有序的,每个元素都有一个固定的位置(索引),索引从 0 开始。

  2. 可变性:列表是可变的(mutable),可以动态地添加、删除或修改元素。

  3. 元素类型多样性:列表中的元素可以是任意类型,甚至可以是不同类型的混合。

  4. 支持重复元素:列表中可以包含重复的元素。 

示例代码: 

# 定义一个包含字符串的列表
fruits = ["apple", "banana", "cherry"]# 定义一个包含不同类型元素的列表
mixed_list = [42, "Python", 3.14, True]# 定义一个嵌套列表
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 访问列表中的元素
print(fruits[0])       # 输出: apple
print(matrix[1][2])    # 输出: 6

 列表的常见操作:

  1. 访问元素:通过索引访问列表中的元素。

  2. 修改元素:通过索引直接修改列表中的元素。

  3. 添加元素:使用 append()insert() 或 extend() 方法。

  4. 删除元素:使用 remove()pop() 或 del 语句。

  5. 遍历列表:使用 for 循环遍历列表中的元素。


接下来我们将详细介绍这些操作: 

访问列表元素

列表中的元素可以通过下标索引访问,索引从 0 开始。

 修改列表元素

列表是可变的,可以通过索引直接修改元素。

添加元素

  • append():在列表末尾添加一个元素。

  • insert():在指定位置插入一个元素。

  • extend():将另一个列表的所有元素添加到当前列表末尾

    my_list = [1, 2, 3]# 添加元素
    my_list.append(4)  # [1, 2, 3, 4]# 在索引1处插入元素
    my_list.insert(1, 99)  # [1, 99, 2, 3, 4]# 扩展列表
    my_list.extend([5, 6])  # [1, 99, 2, 3, 4, 5, 6]

    删除元素

  • remove():删除列表中第一个匹配的元素。

  • pop():删除并返回指定索引的元素(默认删除最后一个元素)。

  • del:通过索引删除元素。

    my_list = [10, 20, 30, 40, 50]# 删除值为20的元素
    my_list.remove(20)  # [10, 30, 40, 50]# 删除并返回最后一个元素
    last_element = my_list.pop()  # last_element = 50, my_list = [10, 30, 40]# 删除索引1处的元素
    del my_list[1]  # [10, 40]

    查找元素

  • index():返回指定元素的索引。

  • in 关键字:检查元素是否存在于列表中。

什么是元组: 

在Python中,**元组(Tuple)**是一种有序的、不可变的序列类型,用于存储一组元素。元组用圆括号 () 定义,元素之间用逗号分隔。元组与列表类似,但元组是不可变的(immutable),这意味着一旦创建,就不能修改元组中的元素。

元组的定义语法:

# 定义一个空元组
empty_tuple = ()# 定义一个包含整数的元组
numbers = (1, 2, 3, 4, 5)# 定义一个包含不同类型元素的元组
mixed_tuple = (1, "Hello", 3.14, True)# 定义一个嵌套元组(元组中的元素也是元组)
nested_tuple = ((1, 2), (3, 4), (5, 6))

元组的特点:

元组的常见操作:

访问元组元素:

元组中的元素可以通过下标索引访问,索引从 0 开始

 2. 元组的切片

元组支持切片操作,可以获取子元组。

3. 元组的遍历 

可以使用 for 循环遍历元组中的每个元素。

元组与列表有什么区别:

1. 可变性

  • 列表(List):是可变的(mutable),可以动态地添加、删除或修改元素。

  • 元组(Tuple):是不可变的(immutable),一旦创建,就不能修改元组中的元素。

示例:

# 列表是可变的
my_list = [1, 2, 3]
my_list[1] = 99  # 修改元素
my_list.append(4)  # 添加元素
print(my_list)  # 输出: [1, 99, 3, 4]# 元组是不可变的
my_tuple = (1, 2, 3)
my_tuple[1] = 99  # 报错: TypeError: 'tuple' object does not support item assignment

 

2. 语法

  • 列表:用方括号 [] 定义。

  • 元组:用圆括号 () 定义。

# 列表
my_list = [1, 2, 3]# 元组
my_tuple = (1, 2, 3)

3. 性能

  • 列表:由于列表是可变的,它的存储和操作(如添加、删除元素)会占用更多的内存和计算资源。

  • 元组:由于元组是不可变的,它的存储和访问速度比列表更快,适合存储不需要修改的数据。

浅浅总结一下吧: 


 

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

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

相关文章

dubbo转http方式调用

业务背景:在当前项目下,所有前端请求均通过外层网关转发到后端这边的dubbo服务,现计划去掉网关层,由前端直接http调用后端dubbo。 解决方案:在前端调用方式不变的前提下,后端服务新建controller层&#xf…

OpenHarmony构建系统实践-跨部件引用

上一篇通过gn构建系统利用部件构建了可执行程序、动态库和配置文件,以及部件内的引用,本篇通过实现跨部件的模块引用,通过实现部件间的使用方法,以此来达到复用三方部件和模块库的目的。 本节以实现两个自定义的部件为例&#xff…

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间

在 compare-form.vue 中添加 compareDate 隐藏字段,并在提交时自动填入当前时间。 提交表单时存入的对象是FakeRegistration,这个对象里面有compareDate字段,刚好表格查询的对象也是FakeRegistration,所以表格展示的时间就是刚才…

Windows 11【1001问】如何安装Windows 11

紧接上篇内容,本文详细介绍了从准备工作到具体安装步骤的完整流程,帮助用户顺利完成Windows 11系统的安装。内容涵盖了ISO镜像文件的下载与校验、启动U盘的制作、硬件兼容性检查,以及BIOS/UEFI设置和系统安装过程中的关键步骤。通过逐步指导&…

Chromedriver与Chrome版本映射表

‌Chromedriver与Chrome版本映射表‌如下: ‌Chrome 71-73版本对应Chromedriver 2.46‌‌Chrome 70-72版本对应Chromedriver 2.45‌‌Chrome 69-71版本对应Chromedriver 2.44‌‌Chrome 68-70版本对应Chromedriver 2.43‌‌Chrome 67-69版本对应Chromedriver 2.42‌…

LSM-Tree (日志结构合并树)

LSM-Tree(日志结构合并树)是一种高效处理写操作的存储结构,广泛应用于NoSQL数据库如LevelDB和RocksDB。其核心思想是将随机写入转换为顺序写入,提升吞吐量。以下是其原理及Java实现示例: ### **LSM-Tree 原理** 1. **…

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…

3-提前结束训练

一、核心类 class EarlyStopping:# YOLOv5 simple early stopperdef __init__(self, patience30):self.best_fitness 0.0 # i.e. mAPself.best_epoch 0self.patience patience or float(inf) # epochs to wait after fitness stops improving to stopself.possible_stop …

若依 ruoyi-vue 根据角色切换路由菜单权限 SAAS

后端根据角色查询相应的菜单(角色对应管理的系统) /*** 获取路由信息根据角色(系统类型)** return 路由信息*/GetMapping("getRoutersBySystemType")public AjaxResult getRoutersBySystemType(String systemType) {Lon…

2024最新版鸿蒙纯血原生应用开发教程文档丨学习ArkTS语言-基本语法

ArkTS是HarmonyOS的主要应用开发语言,在TypeScript基础上进行了扩展,保留了其基本风格,并通过增强静态检查和分析来提高程序的稳定性和性能。本教程将帮助开发者掌握ArkTS的核心功能、语法及最佳实践,以便高效地构建高性能移动应用…

使用插件 `vue2-water-marker`添加全局水印

使用插件 vue2-water-marker添加全局水印 效果图 1、安装插件 npm install vue2-water-marker --save2、全局注册 // main.js import Vue from vue import Vue2WaterMarker from vue2-water-markerVue.use(Vue2WaterMarker)3、在组件中使用 <template><div id&q…

docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结

官方网站 官方网址&#xff1a;etcd 二进制包下载&#xff1a;Install | etcd GitHub社区项目&#xff1a;etcd-io GitHub GitHub社区项目版本历史&#xff1a;Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…

探索浮点数在内存中的存储(附带快速计算补码转十进制)

目录 一、浮点数在内存中的存储 1、常见的浮点数&#xff1a; 2、浮点数存储规则&#xff1a; 3、内存中无法精确存储&#xff1a; 4、移码与指数位E&#xff1a; 5、指数E的三种情况&#xff1a; 二、快速计算补码转十进制 1、第一种方法讨论&#xff1a; 2、第二种方…

第25周JavaSpringboot实战-电商项目 4.商品分类管理

商品分类模块开发笔记 模块功能概述 实现分类数据的 增删改查 功能核心难点&#xff1a; 分类的父子级目录结构递归实现多级分类查找列表展示顺序控制&#xff08;从父级向子级递归&#xff09; 接口说明 后台接口 1. 添加分类 请求地址: /admin/category/add 请求方法: …

【星云 Orbit-F4 开发板】03g. 按键玩法七:矩阵键盘单个触发

【星云 Orbit-F4 开发板】03g. 按键玩法七&#xff1a;矩阵键盘单个触发 引言 矩阵键盘是一种常见的输入设备&#xff0c;广泛应用于各种嵌入式系统中。通过矩阵键盘&#xff0c;用户可以通过按键输入字符或控制信号。本文将详细介绍如何使用STM32F407的GPIO引脚实现矩阵键盘的…

Milvus x DeepSeek 搭建低成本高精度 RAG 实战

为什么手握海量数据&#xff0c;却用不出真正的“智能”&#xff1f;要么 AI 模型学艺不精&#xff0c;答非所问&#xff1b;要么技术门槛太高&#xff0c;让普通开发者望而却步。现在&#xff0c;使用阿里云 Milvus 向量检索服务、DeepSeek 大模型和 PAI LangStudio 开发工具&…

每日一题——两数之和

两数之和 问题描述示例提示思路分析代码实现代码解析1. 哈希表结构体定义2. 初始化哈希表3. 释放哈希表内存4. 主函数 twoSum5. 返回结果复杂度分析 第二种解法代码功能概述代码详细注释1. 哈希表结构体定义2. 哈希表指针3. 查找函数4. 插入函数5. 两数之和函数 6. 主函数&…

2025年SCI1区TOP:真菌生长优化算法FGO,深度解析+性能实测

目录 1.摘要2.算法原理3.结果展示4.参考文献5.代码获取 1.摘要 本文提出了一种新型的自然启发元启发式算法——真菌生长优化算法&#xff08;FGO&#xff09;&#xff0c;灵感来源于真菌在自然界中的生长行为。真菌的生长行为包括菌丝生长、分枝和孢子萌发&#xff0c;菌丝生长…

穿越AI边界:深度集成DeepSeek API与云平台的实践之路

云边有个稻草人-CSDN博客 随着人工智能技术的日益发展&#xff0c;深度学习和自然语言处理&#xff08;NLP&#xff09;已经在很多领域得到了广泛的应用。DeepSeek作为一款领先的大型语言生成模型&#xff0c;凭借其强大的推理和生成能力&#xff0c;已经被越来越多的开发者和…

动态表头导出EasyExcel

在 Spring Boot 中结合 EasyExcel 实现动态表头导出&#xff08;无实体类&#xff0c;表头和字段&#xff08;前端传表名&#xff0c;字段值动态查询&#xff0c;返回List<Map<String,Object>>&#xff09;由前端传递&#xff09;可以通过以下步骤实现。以下是完整…