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:结束索引(不包含)。
  • 下标索引从 0 开始。
  • 负数索引从 -1 开始,表示从末尾开始计数。
  • 切片 [start:stop:step] 可以获取子序列。

索引越界会抛出 IndexError


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


什么是列表:

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

总结一下子吧:

在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 语句。

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


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

访问列表元素

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

 修改列表元素

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

添加元素

  • append():在列表末尾添加一个元素。
  • insert():在指定位置插入一个元素。
  • remove():删除列表中第一个匹配的元素。
  • pop():删除并返回指定索引的元素(默认删除最后一个元素)。
  • index():返回指定元素的索引。

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

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]

查找元素

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]

删除元素

什么是元组: 

在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. 性能

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

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

浅浅总结一下吧: 


Read more

Flutter 组件 flutterw_sidekick_plugin 适配鸿蒙 HarmonyOS 实战:侧翼脚手架扩展,构建工程自动化与环境一致性治理架构

Flutter 组件 flutterw_sidekick_plugin 适配鸿蒙 HarmonyOS 实战:侧翼脚手架扩展,构建工程自动化与环境一致性治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 flutterw_sidekick_plugin 适配鸿蒙 HarmonyOS 实战:侧翼脚手架扩展,构建工程自动化与环境一致性治理架构 前言 在鸿蒙(OpenHarmony)生态迈向大规模团队协作、涉及多分支并行开发及复杂的 SDK 版本管控的背景下,如何确保每一位开发者的本地构建环境(Flutter/Dart SDK)与生产基准完全对齐,已成为保障项目交付质量的“工程定海神针”。在鸿蒙设备这类强调定制化编译工具链与私有插件依赖的环境下,如果团队缺乏统一的脚手架工具,由于由于本地 SDK 版本的微小代差(如空安全检测差异),极易由于由于“环境不一致”导致代码在不同机器上产生不可预知的编译崩溃。 我们需要一种能够深度集成 Sidekick、支持自定义命令扩展且具备“强制版本锁死”能力的脚手架治理方案。 flutterw_sidekick_plugin 为 Flutter 开发者引入了基于 Sidekick

By Ne0inhk
Flutter 组件 freezed_collection 的鸿蒙化适配实战 - 驾驭极致集合不可变性大坝、构建 OpenHarmony 分布式端高性能、防篡改、类型安全的数据阵列方案

Flutter 组件 freezed_collection 的鸿蒙化适配实战 - 驾驭极致集合不可变性大坝、构建 OpenHarmony 分布式端高性能、防篡改、类型安全的数据阵列方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 freezed_collection 的鸿蒙化适配实战 - 驾驭极致集合不可变性大坝、构建 OpenHarmony 分布式端高性能、防篡改、类型安全的数据阵列方案 前言 在鸿蒙(OpenHarmony)生态的工业级交付、重型金融结算以及对业务逻辑零缺陷容忍的跨端政务系统中。“集合数据的不可变性与深层防篡改维度”是衡量整个系统架构鲁棒性的最终质量门禁。面对包含数万个 SKU 商品详情、海量设备状态快照、甚至是金融流水大波次的 0308 批次工程大盘。如果仅仅依靠 Dart 原生的 List.unmodifiable 或者是干瘪的运行时报错。不仅会导致在定位多线程并发竞态(Race Condition)时让架构师如同在逻辑废墟中盲人摸象。更会因为缺乏编译期强制约束。令整个系统的状态管理在跨设备同步时陷入严重的混乱盲区。 我们需要一种“逻辑严丝合缝、操作物理隔离”的集合资产保护艺术。 freezed_collection 是一套专注于无缝整

By Ne0inhk
【MySQL】win 10 / win11:mysql 5.7 下载、安装与配置

【MySQL】win 10 / win11:mysql 5.7 下载、安装与配置

目录 一、MySQL 下载 (1)MySQL 官网下载地址 (2)下载保存安装包 二、MySQL 安装 (1)运行安装包 (2)选择安装类型 (3)选择安装版本号 (4)配置服务端口 (5)配置 root 的密码 (6)配置服务名称 (7)安装完成 三、配置系统环境变量 (1)打开系统环境变量配置面板 (2)编辑系统变量 Path 四、验证安装完成 五、Navicat 测试连接 (1)连接数据库 (2)填写连接信息 (3)测试连接 (4)保存连接 (5)高级配置(

By Ne0inhk
【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

【MYSQL】MYSQL学习的一大重点:MYSQL表的操作

🎬 个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》《C/C++干货分享&学习过程记录》 《Linux操作系统编程详解》《笔试/面试常见算法:从基础到进阶》《Python干货分享》 ⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平 🎬 艾莉丝的简介: 文章目录 * 0 ~> 概要 * 1 ~> 创建表 * 2 ~> 创建表的案例详解 * 3 ~> 查看表结构 * 4 ~> 修改表 * 4.1 什么时候需要修改表 * 4.2 修改方式 * 4.3 案例 * 4.3.1 在users表添加二条记录 * 4.

By Ne0inhk