在python中使用[[v]*n]*n遇到的坑及解决
作者:范翻番樊 发布时间:2022-02-03 10:31:35
标签:python,[[v],n],n
使用[[v]*n]*n遇到的坑
今天通过[[v]*n]*n快速创建列表, 当我使用索引修改值时, 本来是打算修改a[0][0]这一个元素的第一个值, 但是打印结果却将三个元素第一值都修改了,所以就记录一下!
遇到的问题
>> data = [[0] *3] *3
>> data
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>> data[0][0] = 1
>> data
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
通过一番研究
>> id(data[0])
836879108296
>> id(data[1])
836879108296
>> id(data[2]) # 可以发现,三个元素使用的是同一个内存地址编号
836879108296
# 推荐使用这种方法或者使用列表推导式
>> data2 = [[1,2,3],[4,5,6],[7,8,9]]
>> id(data2[0])
836879107208
>> id(data2[1])
836879108552
>> id(data2[2])
836879109960
# 使用列表推导式
>> data3 = [[1,2] for i in range(10)]
>> data3[0][0] = 100
[[100, 2], # 只是修改了第一个元素的第一个值
[1, 2],
...
[1, 2]]
# 查看内存地址
>> id(data3[0])
836879107528
>> id(data3[1])
836848339912
使用[[v]*n]*m遇到的问题
需求:想通过python生成m行n列的矩阵
方式1:(有问题)
data = [[0]*3]*4 #4行3列
data
输出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
修改data[0][0]元素的值
data[0][0] = 1
data
输出
[[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]
哇,是不是对结果很迷,为啥改变一个值会对列为0的所有元素改变呢?
解析:我们可以看下他们对应的内存指向地址
问题出在这里了。
方式2:
#输入
data1 = [[0 for i in range(3)] for j in range(4)]
data1
# 输出
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
#输入
data1[0][0] = 1
data1
#输出
[[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
来源:https://blog.csdn.net/u011361138/article/details/80138226


猜你喜欢
- 网页过渡是指当浏览者进入或离开网页时,页面呈现的不同的刷新效果,比如卷动、百叶窗等。注:通过模板所建网页无法添加网页过渡效果!制作步骤:1、
- 数据库连接池对一个简单的数据库应用,由于对数据库的访问不是很频繁,这时可以简单地在需要访问数据库时,就新创建一个连接,就完后就关闭它,这样做
- 1 random.choicepython random模块的choice方法随机选择某个元素foo = ['a',
- python拼接字符串一般有以下几种方法:①直接通过(+)操作符拼接s = 'Hello'+' '+'
- 如下所示:list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice = random.sample(list
- 需求和思路在一般的小项目或者一个小软件,例如客户端之类的小程序中,可能会需要数据的持久化.但是使用一般的数据库(Mysql)之类的不合适.使
- 内容摘要:在本人上一篇教程《彻底弄懂CSS盒子模式五(定位强化练习) 》有讲到一个很酷的链接面板提示的实例制作,那时主要是用到di
- 远程连接access数据库的几个方法: 1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接
- 通过对 26 个字母的设定,设置自己要输出的字体。name = "RUNOOB"# 接收用户输入# name = inp
- Redis通常被认为是一种持久化的存储器关键字-值型存储,可以用于几台机子之间的数据共享平台。连接数据库 注意:假设现有几台在同一局域网内的
- 1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)
- 1 概述1.1 贪心算法贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选
- 本文实例讲述了Python微信推送模板消息功能。分享给大家供大家参考,具体如下:官方文档:https://mp.weixin.qq.com/
- xlabel(‘time',‘FontSize',12);如果没有设置位置,默认是在中间在xlabel中也有position
- 我就废话不多说了,大家还是直接看代码吧~In [1]: import osIn [2]: os.environ["CUDA_VIS
- Firefox 3 有一个很让人讨厌的bug:基于某种目的,在表单提交时 disable 掉提交按钮,通过后退键回到这个页面后,这个提交按钮
- 注意:localtime获取的年份是相对于1900的偏移,需要加上1900,而localtime获取的month范围是0-11,需要加1。#
- 【摘要】用定值 Cookie 实现反爬 Cookie 生成由于本案例需要用到一个特定的 Cookie ,所以我们需要提前将其生成,你可以直接
- 本文实例讲述了PHP实现上传文件并存进数据库的方法。分享给大家供大家参考。具体如下:show_add.php文件如下:<?php &n
- Wake-On-LAN简称WOL,是一种电源管理功能;如果存在网络活动,则允许设备将操作系统从待机或休眠模式中唤醒。许多主板厂商支持IBM提