找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2199|回复: 2

[求助] 操作内存地址不同的列表,为啥还是会原地操作?

1

主题

2

帖子

2

积分

贫民

积分
2
hdxuezha 发表于 2020-1-17 09:34:36 | 显示全部楼层 |阅读模式
我要对一个二维列表进行行列互换,b列表是通过a列表切片生产,然后行列互换的时候,会把a列表也修改,查看过a和b的内存地址是不同的,我没有对a列表做过修改,求大神帮忙解答为什么a列表会变?a = [
    [2,2,3,2],
    [0,0,0,0],
    [0,0,0,0],
    [2,2,2,2]

b = a[::-1]
for i in range(4):
    print('{0} ==> {1}'.format(a[i],b[i]))
print('a的地址:%s ;b的地址:%s' % (id(a),id(b)))
for i in range(len(a)):
    for j in range(len(a[i])):
        b[j][i] = a[i][j]
for i in range(len(a)):
    print('{0} ==> {2}'.format(a[i],b[i]))
运行结果: QQ图片.png


回复

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
priest0o 发表于 2020-1-19 14:53:54 | 显示全部楼层
因为a里面的每一个列表都分配了内存地址,跟b里面始终是一样的;a和b不一样是因为本来就不是列表

点评

谢谢,明白了!  发表于 2020-1-21 14:44
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表