2012-11-19 68 views

回答

5

你的意思是這樣的:

new_list = [None]*nbr 

這個成語主要用於不可變對象。對於可變對象,通常

new_list = [ mutable_object_factory() for _ in range(nbr) ] 

使用(除非你真的知道自己在做什麼:)

+0

爲什麼總是使用兩種不同的語法呢? :) –

+0

@tvdien - 他們做的事情略有不同。第一個更簡潔。最後,由於這兩個習語都很常見,所以兩者都很好(例如在閱讀其他人的代碼時) – mgilson

+0

@tvdien - 這兩者之間存在重要的分歧,因爲如果你做new_list = obj * nbr,你正在創建nbr數字引用OBJ。這幾乎肯定不是想要改變new_list [0] .something會改變所有引用的obj副本中的something屬性。 – rorycl

1

你的意思是這樣的嗎?

[fake_element for n in xrange(nbr)] 
0

假設隨機元素存儲在一個名爲choices列表,你可以使用random.choice

In [1]: choices = ['a', 'b', 'c'] 

In [2]: myList = [random.choice(choices) for x in xrange(10)] 

In [3]: myList 
Out[3]: ['b', 'b', 'c', 'b', 'c', 'a', 'a', 'a', 'b', 'a'] 
+0

我剛剛意識到我認爲我誤解了這個問題的「假」元素作爲隨機元素。 – acjay

相關問題