python中list*n生成多维数组与for循环生成多维数组的区别说明
作者:shangyj17 时间:2022-01-10 08:57:33
list*n生成多维数组与for循环生成多维数组的区别
本文主要介绍生成二维数组的方法,同时解释使用list * n 方式所存在的问题。
1.从一个问题说起
先看一段代码:
list0 = [1,2,3]
list1 = [list0] * 3
print('list1 is :',list1)
list1[0][0] = 999
print('new list1 is :',list1)
结果:
程序希望通过list * n 方式的方式生成一个初始的二维数组,并对其中部分值进行修改,从而产生我们希望得到的数组。
但是,当我们修改[0][0]位置的数值后,发现[1][0],[2][0]位置的数字也变成了999
原因是,当我们使用list * n 方式的时候,采用的是浅拷贝,list1[0],list1[1],list1[2]其实都是list0的浅拷贝。
当我们在上面程序中,加入下列代码:
print('list0 is ',list0)
print(list0 is list1[0])
print(list1[0] is list1[1])
list0的值也随之改动了,并且,通过程序判定,list0,list1[0],list[1]其实都是一个列表。
2.正确的方式
list0 = [(i + 1) for i in range(3)]
list2 = [[(i + 1) for i in range(3)] for _ in range(3) ]
print('list2 is :',list2)
list2[0][0] = 999
print('new list2 is :',list2)
print('list0 is ',list0)
print(list0 is list2[0])
print(list2[0] is list2[1])
如何动态生成多维数组
多维数组其实就是多个一维数组的嵌套,Python中有原生的list,类似一个动态数组。
所以动态生成多维数组的思想就是在list中动态嵌套添加list。
下面代码生成一个一个3×3×2的三维数组
# coding:utf-8
# 使用Python3中的print函数
from __future__ import print_function
arr = []
# 基本思想是在list中动态添加list,每个list可以嵌套,这样就可以形成多维数组了
# arr中保存的而是row的集合,row中保存的是col的集合
# 这是一个3×3×2的三维数组
for i in range(3):
row = []
for j in range(3):
col = []
col.append(i + j)
col.append(i * j)
row.append(col)
arr.append(row)
print(arr)
print("Output Result:")
for i in range(3):
for j in range(3):
for k in range(2):
print('[', end='')
print(i, end=', ')
print(j, end=', ')
print(k, end='] = ')
print(arr[i][j][k])
运行结果:
来源:https://blog.csdn.net/qq_17753903/article/details/82927136
标签:python,list,n,多维数组,for循环
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
用JS实现渐变效果,兼容各款浏览器
2008-09-13 19:10:00
用于打印的页面设计
2009-07-06 12:47:00
python tkinter模块的简单使用
2021-11-20 16:52:33
![](https://img.aspxhome.com/file/2023/5/75325_0s.png)
python使用正则表达式替换匹配成功的组
2021-12-13 07:22:03
介绍Python的Django框架中的静态资源管理器django-pipeline
2023-11-12 00:10:35
getWindow与isWindow
2009-12-28 13:12:00
客户端JavaScript代码封装
2008-12-26 18:10:00
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2021-12-11 10:17:09
![](https://img.aspxhome.com/file/2023/5/89225_0s.png)
详解Python使用OpenCV如何确定一个对象的方向
2022-04-06 04:16:42
![](https://img.aspxhome.com/file/2023/6/65966_0s.jpg)
Oracle 创建用户及数据表的方法
2009-09-26 18:25:00
详解Python中高阶函数(map,filter,reduce,sorted)的使用
2023-10-24 15:39:09
使用darknet框架的imagenet数据分类预训练操作
2022-08-03 16:57:44
![](https://img.aspxhome.com/file/2023/2/75342_0s.jpg)
Python多进程fork()函数详解
2023-06-08 19:41:37
面向对象的CSS
2009-07-03 12:23:00
asp+ajax仿google搜索提示效果代码
2011-03-09 10:52:00
Python 数据可视化实现5种炫酷的动态图
2023-07-22 10:46:14
![](https://img.aspxhome.com/file/2023/4/76904_0s.gif)
简单分析python的类变量、实例变量
2022-12-20 20:39:56
python的语句结构你真的了解吗
2022-08-11 23:05:39
Django压缩静态文件的实现方法详析
2023-06-15 05:31:33
FSO组件之驱动器操作asp源码
2010-05-03 10:59:00