当前位置:   article > 正文

python 怎么申请“可变”元组_如何使得元组变为可变类型?

如何使得元组变为可变类型?

元组申请后不可改变

元组不可变的是元组元素指向的地址,不是地址中的值,如果元组指向list地址时,list内的值是可以改变的。

例子如下:

test = ([1],[2])
test[0][0] = 8
test
  • 1
  • 2
  • 3
([8], [2])
  • 1

用乘以个数得到的元组,指向同一个地址,改地址list内值的改变会引起元祖中所有list值的改变,如下:

t = ([0],)*5
  • 1
w = {w:{'统计树':t, 'ind':ind} for ind,w in enumerate(['a','b','c'])}
  • 1
w
  • 1
{'a': {'统计树': ([0], [0], [0], [0], [0]), 'ind': 0},
 'b': {'统计树': ([0], [0], [0], [0], [0]), 'ind': 1},
 'c': {'统计树': ([0], [0], [0], [0], [0]), 'ind': 2}}
  • 1
  • 2
  • 3
w['a']['统计树'][0][0] = 3
  • 1
w
  • 1
{'a': {'统计树': ([3], [3], [3], [3], [3]), 'ind': 0},
 'b': {'统计树': ([3], [3], [3], [3], [3]), 'ind': 1},
 'c': {'统计树': ([3], [3], [3], [3], [3]), 'ind': 2}}
  • 1
  • 2
  • 3

如何新建包含list的元祖同时,指向不同的list地址(改变其中一个值,不影响其它值)

新建包含list的元祖,可以先生成list,再转为元祖,如下:

test2 = [[i] for i in range(5)]
test2
  • 1
  • 2
[[0], [1], [2], [3], [4]]
  • 1
tuple(test2)
  • 1
([0], [1], [2], [3], [4])
  • 1
test2[2][0] = 9
  • 1
test2
  • 1
[[0], [1], [9], [3], [4]]
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/305616
推荐阅读
相关标签
  

闽ICP备14008679号