元组的可变性

本文探讨了Python中元组的不可变性及其对包含的可变对象的影响。通过实例展示了即使元组不可变,其内部的列表等可变对象仍可被修改,从而间接改变了元组的内容。

虽然元组对象本身是不可变的,但这并不意味着元组包含的可变对象也不可变。

t=([‘xyz’,123],23,56)

print t

([‘xyz’,123],23,56)

t[0][1]=[‘xyz’,232]

print t

([‘xyz’,232],23,56)

在上面的例子中,虽然t是一个元组类型变量,但是我们设法通过改变他的第一个元素(列表对象)的项来‘改变’他,虽然我们只是改变了一个可变对象,但在某种意义上,我们也改变了元组对象。

### Python 中字典、列表、集合、元组的特性总结 #### 可变性 - **字典 (Dictionary)**:可变。可以通过添加、删除或更新键值对来改变其内容[^1]。 - **列表 (List)**:可变。可以对其元素进行增删改操作[^2]。 - **集合 (Set)**:可变。允许动态地添加或移除元素[^1]。 - **元组 (Tuple)**:不可变。一旦创建,无法更改其中的内容。 #### 有序性 - **字典 (Dictionary)**:无序(在 Python 3.7 版本之前)。但从 Python 3.7 开始,默认实现了保持插入顺序的功能,但仍被认为是无序的数据结构[^1]。 - **列表 (List)**:有序。元素按照加入的顺序排列,并可通过索引访问。 - **集合 (Set)**:无序。集合中的元素没有固定的顺序。 - **元组 (Tuple)**:有序。与列表类似,可以通过索引来定位特定位置上的元素[^2]。 #### 重复性 - **字典 (Dictionary)**:不允许键重复。如果尝试添加已存在的键,则会覆盖原有的值[^1]。 - **列表 (List)**:允许存在相同的元素多次出现。 - **集合 (Set)**:不允许重复元素。任何试图向集合中添加已有成员的操作都会被忽略[^1]。 - **元组 (Tuple)**:允许相同元素的存在[^2]。 ```python # 示例代码展示各特性的差异 my_dict = {"apple": 1, "banana": 2} my_list = ["apple", "banana", "apple"] my_set = {"apple", "banana"} my_tuple = ("apple", "banana", "apple") # 修改测试 my_dict["orange"] = 3 # 成功修改 try: my_tuple[0] = "grape" # 尝试失败,抛出 TypeError except TypeError as e: print(e) # 查重测试 print(len(my_list) == len(set(my_list))) # False 表明列表中有重复项 print(len(my_set) == len(["apple", "banana"])) # True 集合自动去重 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值