猿问

Python3中元组的不变性

我们知道元组在Python中是不可变的。那为什么下面的代码可以工作呢?

3 * ('a','b','c')

给出如下输出:

('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')


郎朗坤
浏览 143回答 3
3回答

守着星空守着你

“不可修改”表示“无法修改”,而不是“不能用于构造其他数据”。不管怎么说,后者在容器中没有多大意义!除了包含供以后使用的数据外,元组还有什么用?您的示例代码3 * ('a', 'b', 'c') = ('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')仅显示将元组乘以标量会创建带有重复元素的新元组。但是,以下操作是不可能的:tup = ('a', 'b', 'c')tup[0] = 'z'  # fails, because tuples are not mutable

慕妹3242003

`('a','b','c')` is a tuple.并且3 * ('a','b','c')=('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')是由3倍的组成的另一个元组('a','b','c')。如果你觉得x =('a','b','c')那么3*('a','b','c')= X + X + x`(外观,x和x + X + x是不一样的!),两者是分开的元组。在这个相似的规则中,1和1 + 1 + 1是不一样的!您会在Benjamin Toueg的答案中找到一个证明。
随时随地看视频慕课网APP

相关分类

Python
我要回答