广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python中list*n生成多维数组与for循环生成多维数组的区别说明
  • 893
分享到

python中list*n生成多维数组与for循环生成多维数组的区别说明

2024-04-02 19:04:59 893人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录list*n生成多维数组与for循环生成多维数组的区别1.从一个问题说起2.正确的方式如何动态生成多维数组下面代码生成一个一个3×3×2的三维数组list

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])

运行结果:

运行结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python中list*n生成多维数组与for循环生成多维数组的区别说明

本文链接: https://www.lsjlt.com/news/118003.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作