迭代循环和序列类型-列表、元祖

本文介绍了Python中的迭代循环,如for循环和while循环,强调了如何遍历字符串和使用range()。还探讨了列表的常用操作,包括列表推导式、增删改查方法,以及元组的特点和用法。
部署运行你感兴趣的模型镜像

for循环 计数循环

i是代表接收到字符串遍历出来的每一个元素

'python’是可迭代对象

循环的次数由可迭代对象的长度决定

##for i in ‘python’:

print(i)

range() 左闭右开 只能传入整数

range(结束值) 默认从0开始

range(开始值,结束值)

range(开始值,结束值,步长)

##for i in range(5,10,6):

print(i)

查看是否是可迭代对象的方法 dir(对象)

有’iter’就是可迭代对象

for循环也能够和else混合使用

continue 跳出本次循环,继续下次循环

##for i in range(20):

if i%2 ==0:

continue

print(i)

##else:

print(‘循环结束’)

列表推导式:快速生成列表

列表 list

##li = [] # 定义空列表
##for i in range(10):

li.append(i) # append()追加

##print(li)

##li = [i for i in range(10) if i%2==0] # 列表推导式
##print(li)

列表推导式和三目运算混合使用

##li = [i100 if i%2==0 else i10 for i in range(10)]

len()查看长度

列表

索引(下标)取值 li[索引值]

索引值从0开始

负索引从列表尾部开始往前数,负索引从-1开始

##li = [0, 10, 200, 30, 400, 50, 600, 70, 800, 90]

切片 左闭右开

li[索引开始值:索引结束值]

li[索引开始值:索引结束值:步长]

当从左往右切的时候,步长为正数

当从右往左切的时候,步长为负数

切片超出范围的话,就取到最后一个值

切片右边不写范围的时候,默认切到最后一个

切片左右都不写范围的时候,从头切到尾

列表的增删改查

##li = [i for i in ‘abcdefg’]

li.index() 根据元素查找对应元素的索引值(下标)

li.append() 追加,加在列表最后面

li.insert(2,333) 在下标2的位置,添加333的数据

li.extend() 批量添加,加在列表最后,里面的数据会自动遍历

删除

li.pop() 默认删除最后一个元素

li.pop(下标值) 根据下标删除元素

li.remove(元素名称) 根据元素名称删除元素

del li[1:3] 批量删除元素

li.clear() 清空列表

改 赋值语句

li[0] = ‘aa’ 替换单个元素

li[0:3] = ‘bbb’ 可迭代对象会自动遍历 替换的数量不需要一致

列表的其他方法

copy() 复制列表

id() 查看id指向,能够通过id指向判断是否为同一个对象

sort() 列表排序 会改变原列表 同类型才能排序

reverse() 反向,将列表顺序颠倒一下

sort(reverse=True) 反向排序

count() 统计元素出现的次数

sorted(li) 临时排序,不改变原列表

sorted(li,reverse=True) 临时反向排序

元组 tuple

元组可以索引取值

元组也能切片

元组不能替换元素

index() 根据元素查找对应元素索引

tu = (1,) 元组只有一个元素,也要加上逗号

元组拆包

a,b,*c = tu 按顺序接收元组的元素值

多余的给带号的变量接收,并放在列表里面,带号的是不定长参数

*号只能给一个变量,也就是只能存在一个不定长参数

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

<think> 首先,用户的问题是关于Python列表元组的介绍、区别及使用方法。根据系统指令,我需要使用中文回答,并确保回答结构清晰。 参考提供的引用: - 引用[1]:提到Python列表元组的区别,以及如何高效使用它们进行数据操作。 - 引用[2]:强调列表元组的共同点,如支持负数索引、切片、嵌套等。 - 引用[3]:用比喻解释列表元组,列表可修改,元组不可修改;还展示了创建列表元组的方式。 - 引用[4]:给出了元组的定义操作方法,包括如何修改元组内部的列表元素。 从这些引用中,我可以提取关键点: - **列表(List)**:可变序列,可以添加、删除、修改元素。 - **元组(Tuple)**:不可变序列,一旦创建,元素不能改变(但内部如果包含可变对象如列表,可以修改该列表)。 - **共同点**:都支持索引(包括负数索引)、切片、嵌套、存储任意数据类型- **创建方式**:列表使用`[]`或`list()`,元组使用`()`或`tuple()`;单元素元组需要逗号。 - **使用方法**:列表适合需要修改数据的场景,元组适合作为不可变数据使用,如字典键或函数参数。 我的回答结构: 1. **介绍列表元组**:简要定义。 2. **区别**:突出可变性、性能、使用场景。 3. **共同点**:基于引用[2]。 4. **使用方法**:创建、操作(访问、修改等),参考引用[3][4]。 5. **示例代码**:展示基本操作。 6. **总结建议**:何时使用列表或元组。 7. **相关问题**:生成相关问题,如优化、应用场景等。 确保遵守系统指令: - 行内数学表达式用`$...$`,但这里没有数学表达式,所以不需要。 - 独立公式用`$$...$$`,但这里不适用。 - LaTeX语法正确:不涉及。 - 使用中文回答。 - 生成相关问题。 - 在引用段落末尾自然地添加引用标识,如[^1]。 回答中引用来源: - 基于提供的引用,我需要自然地融入信息,并在相关部分添加引用标识。例如,在讨论区别时引用[1],共同点时引用[2],创建使用时引用[3][4]。 完整回答框架: - **开头**:直接回答用户问题。 - **主体**: - 介绍列表元组。 - 详细区别。 - 共同点。 - 使用方法,包括创建操作。 - 示例代码。 - **结尾**:总结建议。 - **相关问题**:生成2-3个相关问题。 相关问题生成: - 根据系统指令,生成相关问题,如: 1. 列表元组在性能上有什么差异? 2. 如何在Python中使用元组作为字典键? 3. 列表元组在实际应用中的最佳实践是什么? 4. 如何高效处理大型列表元组? 确保真实可靠:基于Python官方文档常见知识。 </think>### Python列表元组的介绍、区别及使用方法 在Python中,**列表(List)** **元组(Tuple)** 是两种核心数据结构,用于存储有序的元素集合。它们都属于序列类型,支持索引、切片等操作,但在可变性、性能使用场景上存在显著差异。下面我将逐步介绍它们的定义、区别、共同点及使用方法,帮助您高效应用。 --- #### 1. **列表元组的介绍** - **列表(List)**: - 列表是一个 **可变** 序列,创建后可以随时添加、删除或修改元素。 - 适合存储需要频繁更新的数据集,如用户输入、动态集合等。 - 创建方式:使用方括号 `[]` 或 `list()` 函数。例如: ```python my_list = [1, 'a', True] # 使用字面值创建 empty_list = list() # 创建空列表 ``` 引用[3]中比喻为“散装辣条”,可以随时增减元素[^3]。 - **元组(Tuple)**: - 元组是一个 **不可变** 序列,一旦创建,元素不能修改(但内部可包含可变对象)。 - 适合存储固定数据,如配置参数、坐标点或字典键。 - 创建方式:使用圆括号 `()` 或 `tuple()` 函数;单元素元组需加逗号避免歧义。例如: ```python my_tuple = ('apple', 3.14, False) # 多元素元组 single_tuple = ('only',) # 单元素元组,必须加逗号 not_tuple = (42) # 这不是元组,而是整数 ``` 引用[3]中比喻为“包装辣条”,创建后不能改动[^3]。 --- #### 2. **列表元组的区别** 关键区别在于 **可变性** 相关特性: - **可变性**: - 列表元素可修改:支持 `append()`、`remove()` 等方法。 - 元组元素不可修改:尝试赋值会引发 `TypeError`。但若元组包含列表等可变对象,可修改该列表内部元素(引用[4]示例)[^4]。 - **性能**: - 元组更高效:由于不可变性,元组在创建访问时速度更快,内存占用更小(引用[1])[^1]。 - 列表适合动态操作,但在大数据集上可能较慢。 - **使用场景**: - 列表:用于需要增删元素的场景,如数据清洗、队列实现。 - 元组:用于保证数据不可变,如函数返回值、字典键(引用[1])[^1]。 - **语法细节**: - 列表用 `[]`,元组用 `()`;空列表用 `[]` 或 `list()`,空元组用 `()` 或 `tuple()`。 --- #### 3. **列表元组的共同点** 基于引用[2],两者共享以下特性[^2]: - **索引切片**:支持正负数索引(如 `-1` 表示最后一个元素)切片操作。 ```python data = [1, 2, 3] # 或 (1, 2, 3) print(data[0]) # 输出: 1 print(data[-1]) # 输出: 3 print(data[1:]) # 输出: [2, 3] 或 (2, 3) ``` - **嵌套性**:可互相嵌套或包含其他数据结构。 ```python nested_list = [[1, 2], ('a', 'b')] # 列表嵌套元组 ``` - **数据类型灵活性**:可存储任意类型的数据(整数、字符串、对象等)。 - **有序性**:元素顺序固定,支持迭代--- #### 4. **使用方法示例** 以下代码展示常见操作,结合引用[3][4]的最佳实践[^3][^4]: ```python # 列表操作示例 my_list = [10, 20, 30] my_list.append(40) # 添加元素 → [10, 20, 30, 40] my_list[1] = 25 # 修改元素 → [10, 25, 30, 40] my_list.remove(30) # 删除元素 → [10, 25, 40] print(len(my_list)) # 获取长度: 3 # 元组操作示例 my_tuple = ('x', 'y', 'z', [1, 2]) print(my_tuple[2]) # 访问元素: 'z' # my_tuple[0] = 'a' # 错误!元组元素不可直接修改 my_tuple[3][1] = 99 # 修改元组内部列表 → ('x', 'y', 'z', [1, 99]) print(my_tuple.count('y')) # 计数: 1 print(len(my_tuple)) # 获取长度: 4 ``` **高效使用技巧**(参考引用[1])[^1]: - **选择依据**:若数据需修改,用列表;若需不可变性(如多线程安全),用元组。 - **优化性能**:对只读数据使用元组,减少内存开销。 - **嵌套应用**:在元组中嵌入列表以平衡不可变性灵活性。 --- #### 5. **总结建议** - **使用列表**:当数据需动态变化时(如收集用户输入)。 - **使用元组**:当数据固定时(如常量定义或函数参数)。 - **最佳实践**:优先用元组确保数据安全;仅在必要时用列表。 通过理解这些区别共同点,您可以根据需求选择合适结构,提升代码效率可读性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一逍倾城

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值