網站首頁 編程語言 正文
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
相關推薦
- 2024-03-10 Spring 非自定義Bean注解
- 2023-04-10 Python中figure與axies繪圖有哪些不同_python
- 2022-07-15 Python?print函數:如何將對象打印輸出_python
- 2023-04-07 C語言中循環嵌套的應用方式_C 語言
- 2022-07-31 C語言數據結構算法基礎之循環隊列示例_C 語言
- 2022-11-10 C++實現拷貝構造函數的方法詳解_C 語言
- 2022-12-15 Android?NotificationListenerService?通知服務原理解析_Andro
- 2022-09-30 python實現圖像降噪_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支