Python 二维数组赋值
伊谢尔伦
伊谢尔伦 2017-04-17 15:44:38
[Python讨论组]
grid = [[0,]*5]*3

for i in range(3):
    for j in range(5):
        if (i+j+2)%2 ==1:
            grid[i][j] = 1

print grid

结果成了下面这个样子,请教为何....

[[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1]]
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
大家讲道理

这个是因为列表在python中是引用类型,具体可以参考 http://www.cnblogs.com/btchenguang/archive/2012/01/30/2332479.html

天蓬老师

代码来说话

arr       = [0,1,2,3]
arr       = [arr]*2
arr[0][0] = 100
arr[1][3] = 200
print arr


你可以理解每行都是对原arr = [0,1,2,3]的引用。
任意改变任意列上的值,那一列都会改变,因为他们都是同一个引用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号