Python 数据结构之列表、元组

本文详细介绍了Python中列表和元组这两种数据类型的使用方法及特点。列表是有序、可更改和可重复的数据集合,支持多种操作如替换、删除等;而元组则是不可更改的数据集合,操作相对较少。

数据类型之列表、元组

       今天来分享一下关于列表和元组的学习心得。本篇是数据类型系列的倒数第二篇,最后一篇我们单独留给元组,同时会在该篇中解释原因,敬请期待。

       关于列表,这一类型可以说是与之前所分享的 集合 类型相似。但是,仅仅是相似而已,还是存在差距的,要不怎么会是一种新的数据类型呢

一、列表

       列表用 [ ] 表示,内部用逗号 ' , ' 分隔。内部元素不受数据类型限制,可混合使用。 

       细心的人有没有发现什么不同? 没错,列表 与 集合 不同的地方在于 它的元素 有序、可更改、可重复,且表示方法为 [ ] 大括号,而不是花括号。同时,列表可使用 [ ] 或 list( ) 创建。

       方法:

       1、关于基本操作,在这里介绍 替换,删除,连接,复制,判断成员资格,求长度

  • 替换、删除:在索引的基础上,通过 [x: y: z] 来选出 从 x 开始,到 y 截至,步长为 z 的范围。 通过L [ x: y: z ]  = [ ... ]来替换选中范围内的元素。 del L[ x: y: z ]来删除选中范围内的元素。[ x: y: z ]依旧是分(切)片,包括 x 对应的元素,不包括 y 对应的元素。 x, y, z 的数值不要越界。x, y, z 均可缺失,x缺失表示从头开始,y缺失表示至结尾,z缺失表示其默认值为1
  • 连接:L1 + L2    用于两个列表之间的连接
  • 复制多个: L * n    复制n次列表 L
  • 判断成员资格: in    可用于判断一个元素 n 是否在列表 L 中存在。 用 n in L 来判断。 存在则返回 True,反之则返回False
  • 求长度:通过 len( L )    返回列表长度。 即,列表内元素个数

       2、更多的相关操作

  • 求列表内元素的最小值 / 最大值    min( ) / max( ) 括号内参数为列表名。注意!此方法需要列表内元素类型相同。 若不同则无法比较,将抛出 TypeError 异常
  • 元素第一次出现的位置    L.index( x, i, j ) 参数 x 为要查找的元素。 i, j 可缺失,表示从整个列表查询。 否则从 i 开始,j 结束,同样的,j不包含在查找范围中。 提示两点:索引号依旧是从 0 开始;另外,参数 x 的类型,需要与列表内元素匹配。否则将找不到此元素,并抛出 ValueError 异常。 
  • 元素出现的次数    L.count( x ) 参数 x 为需要统计次数的元素,返回值为数值
  • L.append( x )    将 x 加入列表 L 中
  • L.insert(  i, x )    在列表的第 i 个位置处增加元素 x
  • L.remove( x )    从列表 L 中移除出现的第一个 x
  • L.clear( )    移除列表 L 中的所有元素
  • L.pop( i )    抛出列表 L 中的位置为 i 的元素,并更新列表 L 。就是说,弹出这个随机元素后,该列表中将不再有此元素
  • L.copy( )    返回列表 L 的一个副本。在赋值后与原列表互不干预
  • L.reverse( )    将列表L中的元素反转

至此,列表部分结束~

二、元组

       元组与上述的列表不同,它一旦被创建便不允许进行修改。使用小括号 ( ) 或 tuple( ) 创建。 依旧是使用 ' , ' 逗号分隔,且内部元素不做类型的限制,可混用。

        由于元组的内容不可更改,这一特性也导致了它只有少数的操作,并无很多的方法。

  • 分(切)片:在索引的基础上,通过 [x: y: z] 来选出 从 x 开始,到 y 截至,步长为 z 的范围。通过 T[ x: y: z ]来查找范围内的元素。[ x: y: z ]依旧是分(切)片,包括 x 对应的元素,不包括 y 对应的元素。 x, y, z 的数值不要越界。x, y, z 均可缺失,x缺失表示从头开始,y缺失表示至结尾,z缺失表示其默认值为1
  • 连接:T1 + T2    用于两个元组之间的连接
  • 复制多个: T * n    复制n次元组 T
  • 判断成员资格: in    可用于判断一个元素 n 是否在元组 T 中存在。 用 n in m 来判断。 存在则返回 True,反之则返回False
  • 求长度:通过 len( T )    返回元组长度。 即,元组内元素个数
  • 求元组内元素的最小值 / 最大值    min( ) / max( ) 括号内参数为元组名。 注意!此方法需要元组内元素类型相同。 若不同则无法比较,将抛出 TypeError 异常
  • 元素第一次出现的位置    T.index( x, i, j ) 参数 x 为要查找的元素。 i, j 可缺失,表示从整个元组查询。 否则从 i 开始,j 结束,同样的,j不包含在查找范围中。 提示两点:索引号依旧是从 0 开始;另外,参数 x 的类型,需要与元组内元素匹配。否则将找不到此元素,并抛出 ValueError 异常
<think>我们正在处理一个关于Python元组(tuple)的使用教程请求。根据用户需求,我们需要清晰、结构化地介绍元组的基本概念和使用方法。参考引用内容,我们可以总结以下几点关键信息:1.元组是不可变的有序序列(引用[2]和引用[3])2.元组可以包含任意类型的元素(引用[3])3.元组的创建方式:空元组、单元素元组(注意逗号)、多元素元组(引用[3])4.元组可以通过索引和切片访问(引用[2]和引用[3])5.元组列表的区别在于不可变性(引用[1]和引用[2])我们将按照以下结构组织回答:1.元组的基本概念(定义、特性)2.如何创建元组(多种创建方式)3.访问元组元素(索引、切片)4.元组的操作(虽然不可变,但可以进行的操作如连接、重复等)5.元组的不可变性的含义和优势6.元组的应用场景注意:在回答中,我们将使用行内数学表达式(如果需要)和独立公式(如果有数学表达式)的LaTeX格式,但元组本身不涉及复杂数学公式,所以可能用不到。但如果有,我们会遵守格式要求。另外,根据系统指令,我们需要在末尾生成相关问题。开始回答:</think>### Python元组(Tuple)使用教程 元组(Tuple)是Python中**不可变**的有序序列,用于存储一组数据。列表(List)不同,元组一旦创建,其内容无法修改。下面通过核心概念和示例逐步说明其使用方法: --- #### **1. 元组的特性** - **不可变性**:创建后不能增删改元素(尝试修改会报错) - **有序性**:元素按定义顺序存储,可通过索引访问 - **异构性**:可包含不同类型的数据(如整数、字符串、列表等) - 语法:元素用逗号分隔,通常用圆括号 `()` 包裹(括号非必须但推荐) #### **2. 创建元组** ```python # 空元组 empty_tuple = () # 单元素元组(必须有逗号) single_tuple = (42,) # 注意逗号不可省略 # 多元素元组 fruit_tuple = ("apple", "banana", "cherry") mixed_tuple = (1, True, 3.14, [10, 20]) ``` #### **3. 访问元素** - **索引访问**:下标从0开始 ```python print(fruit_tuple[0]) # 输出: "apple" print(fruit_tuple[-1]) # 输出: "cherry"(负索引表示倒数) ``` - **切片操作**: ```python print(fruit_tuple[1:3]) # 输出: ("banana", "cherry") ``` #### **4. 元组操作(不改变原元组)** | 操作 | 示例 | 结果 | |--------------|-------------------------------|--------------------------| | 连接元组 | `(1,2) + (3,4)` | `(1, 2, 3, 4)` | | 重复元组 | `('Hi!',) * 3` | `('Hi!', 'Hi!', 'Hi!')` | | 成员检测 | `"apple" in fruit_tuple` | `True` | | 长度获取 | `len(fruit_tuple)` | `3` | #### **5. 不可变性的实际意义** - **保护数据**:防止意外修改 ```python point = (3, 5) # point[0] = 10 # 报错: 'tuple' object does not support item assignment ``` - **可哈希性**:可作为字典的键(列表不能) ```python location_dict = {(35, 139): "Tokyo"} ``` #### **6. 元组列表的转换** ```python # 列表元组 my_list = [1, 2, 3] tuple_from_list = tuple(my_list) # (1, 2, 3) # 元组列表 list_from_tuple = list(fruit_tuple) # ["apple", "banana", "cherry"] ``` #### **7. 应用场景** - 函数返回多个值:`return (x, y, z)` - 字典键值:`{(lat, lng): location_name}` - 常量集合:`COLORS = ("RED", "GREEN", "BLUE")` - 数据保护:确保关键数据不被篡改 > **关键区别**:元组不可变,内存占用小于列表列表可变,支持增删操作[^3]。 --- ### 常见问题解答 **Q:单元素元组为何需要逗号?** A:Python会将 `(5)` 解释为整数5,而 `(5,)` 才被识别为元组,逗号消除语法歧义。 **Q:元组内可变元素能否修改?** A:元组本身不可变,但若元素是可变对象(如列表),其内容可修改: ```python mixed_tuple = (1, [2, 4]) mixed_tuple[1][0] = 99 # 合法: 变为 (1, [99, 4]) ``` **Q:如何遍历元组?** A:列表相同: ```python for item in fruit_tuple: print(item) ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值