2017-02-23 47 views
1

繼續Can a variable number of arguments be passed to a function? 中的對話,我想了解如何爲python 2.7中的函數生成隨機數量的參數。爲python函數生成未知數量的列表

特別地,雖然遍歷各種類別,我想傳遞的一個未知的號碼array_like(或列表 S')到scipy.stats.f_oneway

的作品

一個簡單的例子是:

list_male = [34.316349, 34.32932, 34.27, 34.33905, 34.328951] 
list_female = [34.61984, 34.34275, 34.6389, 34.44709, 34.51833] 
f_oneway(list_male, list_female) 

這個作品產生

F_onewayResult(statistic=12.15815414713931, pvalue=0.0082363437299719927) 

,因爲我知道我的gender類只有兩個班malefemale

但是如果我正在運行多個類別的循環並且我不想預先確定具體的列表呢?例如,如果pd.DataFrame中的類別列animal具有未知數量的類別。我希望在循環內執行類似df['animal'].unique().tolist()的操作,然後創建array_like(或任何需要的),以提供給f_oneway

+1

'f_oneway(* a_list_of_lists)'會起作用嗎?你可以試試'a_list_of_lists = [list_male,list_female]'。 – 9000

+0

是的,精美的作品,謝謝! – elzurdo

回答

3

我不熟悉f_oneway(...),但假設它可以採取可變數量的參數,和你有一個可變數量的列表,你可以這樣做:

list_male = [34.316349, 34.32932, 34.27, 34.33905, 34.328951] 
list_female = [34.61984, 34.34275, 34.6389, 34.44709, 34.51833] 
list_both = [...] 
list_neither = [...] 
list_of_lists = [list_male, list_female, list_both, list_neither] 

f_oneway(*list_of_lists) 

這與實現使用splat operator,它將列表內容解壓縮爲單個參數