|
10鱼币
什么东西是不能用乘法 因为乘完后如果改变被乘的元素,整个结果里所有元素都会改变?
拿列表举个不恰当的例子。。类似 a=[1]*5 得到a=[1,1,1,1,1] 如果a[0]=0 结果就会得到a=[0,0,0,0,0]这种
首先你的结果是不对的
- >>> a=[1]*5
- >>> a
- [1, 1, 1, 1, 1]
- >>> a[0]=0
- >>> a
- [0, 1, 1, 1, 1]
复制代码
只有这样才会有你说的现象
- >>> a=[[1]]*5
- >>> a
- [[1], [1], [1], [1], [1]]
- >>> a[0][0]=0
- >>> a
- [[0], [0], [0], [0], [0]]
复制代码
这是由于列表中每个值都有独立的地址,直接复制不会改变其他的值
而列表嵌套,则乘法得到的二级列表的地址是一样的,改变二级列表中的元素,是会使每个二级列表都改变的。
这里要参考可变对象的概念。
如想得到独立的结果需要:
- >>> a = [[1] for i in range(5)]
- >>> a
- [[1], [1], [1], [1], [1]]
- >>> a[0][0] = 0
- >>> a
- [[0], [1], [1], [1], [1]]
- >>>
复制代码
|
最佳答案
查看完整内容
首先你的结果是不对的
只有这样才会有你说的现象
这是由于列表中每个值都有独立的地址,直接复制不会改变其他的值
而列表嵌套,则乘法得到的二级列表的地址是一样的,改变二级列表中的元素,是会使每个二级列表都改变的。
这里要参考可变对象的概念。
如想得到独立的结果需要:
|