python的二維數組操作

来源:http://www.cnblogs.com/shouce/archive/2016/05/27/5533350.html
-Advertisement-
Play Games

需要在程式中使用二維數組,網上找到一種這樣的用法: 1 2 3 4 5 6 #創建一個寬度為3,高度為4的數組 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4 1 2 3 4 5 6 #創建一個寬度為3,高度為4的 ...


需要在程式中使用二維數組,網上找到一種這樣的用法:

1 2 3 4 5 6 #創建一個寬度為3,高度為4的數組 #[[0,0,0], # [0,0,0], # [0,0,0], # [0,0,0]] myList = [[0] * 3] * 4

但是當操作myList[0][1] = 1時,發現整個第二列都被賦值,變成

[[0,1,0],

[0,1,0],

[0,1,0],

[0,1,0]]

為什麼...一時搞不懂,後面翻閱The Python Standard Library 找到答案

list * n—>n shallow copies of list concatenated, n個list的淺拷貝的連接

例:

1 2 3 4 5 6 >>> lists = [[]] * 3 >>> lists [[], [], []] >>> lists[0].append(3) >>> lists [[3], [3], [3]]

[[]]是一個含有一個空列表元素的列表,所以[[]]*3表示3個指向這個空列表元素的引用,修改任何

一個元素都會改變整個列表:

所以需要用另外一種方式進行創建多維數組,以免淺拷貝:

1 2 3 4 5 6 >>> lists = [[] for i in range(3)] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3], [5], [7]]

之前的二維數組創建方式為:

1 myList = [([0] * 3) for i in range(4)]

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 保存在記憶體中的session經常由於dll的變動導致丟失。有一種方法可以長期保存session,那就是session的SqlServer模式。 ASP.NET允許將會話數據存儲到一個資料庫伺服器中,方法是將web.config中session配置中的的mode屬性變成SqlServer。 在這種情況 ...
  • 網上.net ORM框架也不少,但是我感覺這個框架配置很簡單的,前幾年貌似用的人很多,現在好像用得比較少了,隨著它官方的升級現在已經到3.0了, 並且採用T4 模板生成的方式,代碼量好像減少了。不過我感覺2.2還是比較穩定,前些天有網友問這個框架怎麼使用,在次讓我整理了一下。廢話就不說了,先看看怎麼 ...
  • mysql.data.dll下載_c#連接mysql必要插件 全部版本下載:http://hovertree.com/h/bjaf/0sft36s9.htm mysql.data.dll是C#操作MYSQL的驅動文件,是c#連接mysql必要插件,使c#語言更簡潔的操作mysql資料庫。當你的電腦彈 ...
  • 對於一些企業內部核心系統,特別是外網訪問的時候,為了信息安全,可能需要對外部訪問的IP地址作限制,雖然IIS中也提供了根據IP地址或IP地址段進行限制或允許,但並沒有提供根據IP地址所在的城市進行限制或允許。本文主要通過自定義擴展IHttpModule介面,考慮到性能IP資料庫主要採用QQwry純真 ...
  • DateTime dt = DateTime.Now;Label1.Text = dt.ToString();//2009-07-5 13:21:25Label2.Text = dt.ToFileTime().ToString();//127756416859912816Label3.Text = ...
  • C# 導出CSV文件 由於工作需要,需要在Web端請求後,將查詢的數據寫入CSV文檔,返回給Web。 註意點: 1.長字元串的的數字,比如身份證號碼之類的,在csv中顯示的是用科學計數法顯示的,因此需要轉換一下,例如:字元串“12345678987654321”, 寫入時為"=\"123456789 ...
  • 前言 前幾天看一個朋友的博客時,看他用到了C#6的特性,而6出來這麼長時間還沒有正兒八經看過它,今兒專門看了下新特性,說白了也不過是語法糖而已。但是用起來確實能讓你的代碼更加乾凈些。Let's try it. 1、集合初始化器 public class Post { public DateTime ...
  • 1. JVM相關(包括了各個版本的特性) 對於剛剛接觸Java的人來說,JVM相關的知識不一定需要理解很深,對此裡面的概念有一些簡單的瞭解即可。不過對於一個有著3年以上Java經驗的資深開發者來說,不會JVM幾乎是不可接受的。 JVM作為java運行的基礎,很難相信對於JVM一點都不瞭解的人可以把j ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...