【Python】元祖不是完全不可变

元组

学习Python基础的时候,就知道元祖有序,不可变.,后来因为需要修改元祖中的参数,才知道其实元祖也可以发生变化
元组不可变,如果元组里面有列表或者变量的时候,那么元祖就可以发生变化.

元祖里包含列表的时候:

a_list=[1,2]
a_tuple = (('a',1),('b',2),a_list)
print(a_list)
print(a_tuple)

输出结果:

[1, 2]
(('a', 1), ('b', 2), [1, 2])

稍微改改:

def change_tuple(x,y):
    if x>y:
        a_list=[1,2]
    else:
        a_list=[1,3]
    a_tuple = (('a',1),('b',2),a_list)
    print(a_list)
    print(a_tuple)

change_tuple(1,2)
change_tuple(2,1)

输出结果:

[1, 3]
(('a', 1), ('b', 2), [1, 3])
[1, 2]
(('a', 1), ('b', 2), [1, 2])

当a_list改变的时候,a_tuple是可以发生改变的

但其实元组还是没变,因为元组指向的是列表,始终没变
里面有变量,也是这样,指向的是变量.但是已经满足我的需求,让元祖在不同情况下,输出不同的结果.

(1,)这样形式的元祖

a=(1)
print(type(a))
b=(1,)
print(type(b))

输出结果:

<class 'int'>
<class 'tuple'>

以前其实看到(a,)这样的时候,是有点诧异的,但是,省略会报错,试了试,原来是这样.类型都不同.
网上说的是:因为这个()和小括号一样,默认以小括号处理了
如果想当做元组()使用.可以(1,)

当元组里的变量变化的时候,也是可以发生变化

处理和上面的元祖里面有列表类似..

测试环境:Python3.6+Pycharm

Python中,元组(tuple)是不可的序列类型,即它的元素不可修改。所以元组对象本身并没有提供replace()方法用于替换元素。如果你想要替换元组中的某个元素,你可以将元组转换为列表,然后使用列表的replace()方法进行替换,最后再将列表转换回元组。下面是一个示例代码: ``` # 将元组转换为列表 my_tuple = (1, 2, 3, 4, 5) my_list = list(my_tuple) # 使用列表的replace()方法替换元素 my_list = 10 # 将列表转换回元组 new_tuple = tuple(my_list) print(new_tuple) ``` 这段代码将元组 `(1, 2, 3, 4, 5)` 转换为列表 `my_list`,然后使用列表的replace()方法将第三个元素替换为10。最后将列表转换回元组并打印出来,结果为 `(1, 2, 10, 4, 5)`。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [python 列表 元祖 集合](https://blog.csdn.net/weixin_39652646/article/details/110995188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于python元祖与字典与集合的粗浅认识](https://download.csdn.net/download/weixin_38689338/12872428)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值