我们知道元组在Python中是不可变的。那为什么下面的代码可以工作呢?3 * ('a','b','c')给出如下输出:('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c')
3 回答

守着星空守着你
TA贡献1799条经验 获得超8个赞
“不可修改”表示“无法修改”,而不是“不能用于构造其他数据”。不管怎么说,后者在容器中没有多大意义!除了包含供以后使用的数据外,元组还有什么用?
您的示例代码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
TA贡献1824条经验 获得超6个赞
`('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的答案中找到一个证明。
添加回答
举报
0/150
提交
取消