2015-10-16 83 views
0
import random 

a = [1,2,3,4,5,6,7,8,9] 
# random.shuffle(a) # this is fine 
a = random.shuffle(a) # a is now None 

我在我的代碼中犯了一個錯字,但我想知道在這種情況下爲什麼會變成無。發生了什麼事情?隨機隨機洗牌列表變爲無

+0

random.shuffle(一)這是足以沒有必要爲它分配 – The6thSense

回答

5

random.shuffle作品原地的,它不返回任何東西(因此默認情況下它返回None,因爲所有的Python函數調用應該返回一些值),因此,當你這樣做 - a = random.shuffle(a)a變無。嘗試 -

random.shuffle(a) 

random.shuffle文件 -

random.shuffle(x[, random])

洗牌到位序列x。可選參數random是一個0參數函數,返回[0.0,1.0)中的隨機float;默認情況下,這是功能random()

(重點煤礦)

+2

我知道你的意思,但恕我直言說,「它不返回任何東西」是一個有點誤導,因爲它返回'None'。也許你應該提到_all_ Python函數_must_返回一些東西,函數沒有顯式的'return'語句返回'None',並且對於使對象就地變異以返回'None'的函數來說是常規的。 –

+0

你是對的,謝謝,補充說。 –