2015-03-03 70 views
1

在創建列表時,Python是否有辦法強制生成新對象?Python列表生成:強制新對象

假設我有一個類Test其中我想將5個對象存儲在列表中。
我使用下面的代碼來生成列表:

myList = [Test()] * 5 

有了這個代碼蟒只創建1,其被存儲5次對象。

當然,我可以使用for-loop來生成列表。但是在我真正的程序中,這會極大地炸燬代碼,因爲我有大約30個列表,這些列表部分嵌套在另一個列表中。

所以有一個快速的方法(也許是一個班輪)強制python在每個條目中生成一個新的對象?

+3

'[Test()for i in range(5)]'? – Carsten 2015-03-03 12:25:29

+0

不應該使用「新」關鍵字嗎? – vekah 2015-03-03 12:26:08

+7

@vekah:錯誤的語言。 – 2015-03-03 12:26:52

回答

8

使用list comprehension來執行表達式不止一次:

myList = [Test() for _ in range(5)] 

因爲這會忽略range() -produced指數,我命名爲for循環目標_signal the variable is ignored;這只是一個命名約定。

+0

謝謝!這工作。對於我的嵌套列表,我可以使用'myList = [[Test()for _ in range(5)] for _ in range(2)]'順便說一下'''什麼exaclty意味着'_'? – 0xAffe 2015-03-03 12:32:16

+2

@ 0xAffe這是一種非正式的方式來說「我不打算使用這個變量」https://stackoverflow.com/questions/5893163/what-is-the-purpose-of-the-single-underscore-variable- in-python – CoryKramer 2015-03-03 12:35:39

+1

@ 0xAffe:這只是約定,就像命名方法self的第一個參數一樣。 – 2015-03-03 12:37:40