2017-07-03 92 views
0

在Python中,我們可以隨機從列表,如此簡單:選擇整個列表,如果隨機樣本規模過大

>>> import random 
>>> l = [1,2,3] 
>>> random.sample(l,2) 
[2, 3] 

然而,如果樣本大小比列表時,它會返回一個錯誤:

>>> random.sample(l,4) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/random.py", line 315, in sample 
    raise ValueError("Sample larger than population") 
ValueError: Sample larger than population 

是否有一個選項,將允許random.sample選擇整個列表,如果樣本大小比大名單?

回答

5

有沒有這樣的選項(參見help(random.sample)),但你總是可以控制你通過什麼:

random.sample(l, min(len(l),4)) 
+0

這使得有很大的意義。謝謝! –

1

類似:

random.sample(l) if len(l)<4 else random.sample(l, 4) 
+0

'random(l,...)'也會重新列表,但是你的表達不會。 – DyZ

+0

有沒有要求洗牌,但它可以很容易地實現 - 更新。 –