元组
学习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