1. 程式人生 > >Python 中生成包含空列表或全0列表的特定長度的列表

Python 中生成包含空列表或全0列表的特定長度的列表

專案中遇到一個用python生成m*n 的全0 list的坑,在後面使用迴圈賦值的時候出現了一個bug, 記下來以防忘記。

具體情況:

a = [0 for _ in range(3)]

b = [a for _ in range(3)]
a:

[0, 0, 0]

b:

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

for i in range(3):
    for ii in range(3):
         b[i][ii]=i+1

 原本以為生成:

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

結果:
[[3, 3, 3], [3, 3, 3], [3, 3, 3]]

是什麼錯誤呢?
參考https://liam0205.me/2016/03/07/generate-fixed-length-of-empty-list/ ,雖然和部落格中情況略有不同,但應該也是在用列表表示式生成列表的時候,重複使用的時候,用的也是例項的引用。


具體解決方法,就是在

b = [list(a) for _ in range(3)]

加入list(), 這樣就可以迴圈迭代賦值了。具體如何解釋,還需要在探討。

相關推薦

Python 生成包含列表0列表特定長度列表

專案中遇到一個用python生成m*n 的全0 list的坑,在後面使用迴圈賦值的時候出現了一個bug, 記下來以防忘記。 具體情況: a = [0 for _ in range(3)] b =

python遇到包含UTF-8編碼中文的列表字典的輸出的解決方法

今天,在除錯程式時,遇到了一個編碼問題,折騰了好久,看到了一篇部落格:點選開啟連結 才解決了問題,現在摘錄如下,以免今後遇到同樣的問題再次折騰。 在python 下面一個包含中文字串的列表(lis

Pythonpandas dataframe刪除一行一列:drop函式

用法:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False) 在這裡預設:axis=0,指刪除index,因此刪除columns時要指定axis=1; inplace=False,預設該刪除操作不

關於如何在Python使用靜態、類抽象方法的權威指南

Python中方法的工作方式 方法是儲存在類屬性中的函式,你可以用下面這種方式宣告和訪問一個函式 >>> class Pizza(object): ... def __init__(self, size): ... self.size

python生成隨機陣列/向量

使用numpy.random模組來生成隨機陣列轉載 1、np.random.rand 用於生成[0.0, 1.0)之間的隨機浮點數, 當沒有引數時,返回一個隨機浮點數,當有一個引數時,返回該引數長度大小的一維隨機浮點數陣列,引數建議是整數型,因為未來版本的numpy可能不支援非整形引數

python “按位與,,異”與C語言的不同

ref:https://www.2cto.com/kf/201311/254868.html 在python中:按位的運算,都按位的運算,都是把參加運算的數的二進位制形式進行運算。1.與運算:A與B值均為1時,A、B與的運算結果才為1,否則為0 (運算子:&)2.或運算:A或B值為1

【轉】python--Python生成唯一ID的庫——UUID

原文連結https://www.douban.com/note/69073375/ 本來是要給例項新增唯一標識,想了一個偽隨機的方法: # 我想的偽隨機辦法 # 用時間戳和隨機數來生成唯一數字id import scipy

有趣的小案例,如何在python生成所有可能的字串?

  我的目標是能夠生成長度為x的所有可能的字串(字母和數字),並且能夠啟用每個字串的程式碼塊. (像迭代器一樣)唯一的問題是itertools中的那些不會在同一個字串中複製字母.例如: 我得到“ABC”“BAC”“CAB”等而不是“AAA”. 有什麼建議? 使用&

如何判斷一個數組是否包含一個字元字串

第一種方法:遍歷陣列 String[] arr1 = {"1","2","3","4","6","7"}; for (int i = 0; i < arr1.length; i++) {if("

在java判斷一個字串是否包含某個字元字串

一、contains方法 java.lang.String.contains() 方法返回true,當且僅當此字串包含指定的char值序列 此方法返回true,如果此字串包含,否則返回false。 public static void main(String[] args

判斷字串是否包含指定字元特殊字元

Pattern p = Pattern.compile("[@#$%^&*]"); Matcher m = p.matcher(s); boolean match = m.find(); 如果

python生成斐波拉契數列的方法

1. 斐波拉契數列簡介          斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、

python的正則表達式

pat upd 詳細 pri shu rep 多個參數 叠代器 默認值 一、 Re 1. 常用的正則表達式符號 2. 常用的匹配方法 1) re.match(pattern, string, flags=0) 說明:在string的開始處匹配

python局部變量和局變量

技術 不可變 clas 我們 答案 order 來源 mage 訪問 局部變量,就是在函數內部定義的變量 不同的函數,可以定義相同的名字的局部變量,但是各用個的不會產生影響 局部變量的作用,為了臨時保存數據需要在函數 在函數外邊定義的變量叫做全局變量 全局變量能夠在

python os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和區別

os._exit() 和 sys.exit() os._exit() vs sys.exit()  概述 python的程式有兩中退出方式:os._exit(), sys.exit()。本文介紹這兩種方式的區別和選擇。 os._exit()會直接將python程式終止,之

求字串包含重複字元的最長子串的長度

題: 已知一個字串,求這個字串中不包含重複字元的最長子串的長度,如abba返回2,aaaaabc返回3,bbbbbbb返回1. 解題思路: 藉助hashmap來解決,map的鍵key存放字串中出現的

python os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和區別

os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 python的程式有兩中退出方式:os._exit(), sys.exit()。本文介紹這兩種方式的區別和選擇。 os._exit()會直接將pyth

Python基礎(8):python的特性進階篇(迭代,列表生成式,生成器,迭代器)

python中還包括一些高階特性,以下簡單介紹。 迭代 定義:用for迴圈來遍歷物件的過程,叫做迭代。 作用物件:可迭代物件 如何判斷是否為可迭代物件:isinstance(xxx,Iterable),Iterable型別來源於collections模組。 應用場景: 1

Pythonlist列表生成式如何操作使用?list詳解

列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 一、舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):

python列表生成式 | 字典生成

1.列表生成式 列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。 舉個例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11))