python不定長引數 args 的用法

2021-09-22 20:17:00 字數 3853 閱讀 2328

gt.csv

301

234[

'ad'

,'bd'

,'cd'

]301

235[

'a',

'b',

'c']

301237

['af'

,'bf'

,'cf'

]301

239[

'a2'

,'b2'

,'c2'

]302

236[

'a1'

,'b1'

,'c1'

]303

238[

'a3'

,'b3'

,'c3'

]303

2323

['a7'

,'b7'

,'c7'

]304

230[

'a9'

,'b9'

,'c9'

]

需求:

針對gt.csv,按第一列的值劃分後,隨意取出不同的值及對應的行

import pandas as pd

ground_truth =

'./gt.csv'

ground_truth_data = pd.read_csv(ground_truth,

names=

['queryid'

,'termid'

,'context'],

delim_whitespace=

true

)group = ground_truth_data.groupby(

'queryid'

)def

get_partdata

(group,

*args)

:# 前提是已經讀入ground_truth_data,並且進行groupby操作

args_dict =

for i in

range

(len

(args)):

args_dict[i]

= args[i]

all_lt =[[

]for _ in

range

(len

(args))]

for g in group:

queryid = g[0]

for key, value in args_dict.items():

if queryid in args_dict[key]

: all_lt[key]1]

)return

[pd.concat(x)

for x in all_lt]

train_lt =

[301

]dev_lt =

[302

]test_lt =

[303

,304

]train_data = get_partdata(group, train_lt)

print

('first:'

)print

(train_data)

print

('\n'

)train_data, dev_data = get_partdata(group, train_lt, dev_lt)

print

('second:'

)print

(train_data)

print

(dev_data)

print

('\n'

)train_data, dev_data, test_data = get_partdata(group, train_lt, dev_lt, test_lt)

print

('third:'

)print

(train_data)

print

(dev_data)

print

(test_data)

print

('\n'

)>>

>

first:

[ queryid termid context

0301

234[

'ad'

,'bd'

,'cd']1

301235

['a'

,'b'

,'c']3

301237

['af'

,'bf'

,'cf']5

301239

['a2'

,'b2'

,'c2']]

second:

queryid termid context

0301

234[

'ad'

,'bd'

,'cd']1

301235

['a'

,'b'

,'c']3

301237

['af'

,'bf'

,'cf']5

301239

['a2'

,'b2'

,'c2'

] queryid termid context

2302

236[

'a1'

,'b1'

,'c1'

]third:

queryid termid context

0301

234[

'ad'

,'bd'

,'cd']1

301235

['a'

,'b'

,'c']3

301237

['af'

,'bf'

,'cf']5

301239

['a2'

,'b2'

,'c2'

] queryid termid context

2302

236[

'a1'

,'b1'

,'c1'

] queryid termid context

4303

238[

'a3'

,'b3'

,'c3']6

3032323

['a7'

,'b7'

,'c7']7

304230

['a9'

,'b9'

,'c9'

]

注意:

1.生成多個空列表的方法是

all_lt =[[

]for _ in

range

(len

(args)

)]

結果是[,,]

而不是下面這種方法

all_lt =[[

]*len(args)

]

這個的結果是

2.在return部分,如果返回的值確定是大於乙個的話,可以用

return

(pd.concat(x)

for x in all_lt]

)

否則當返回的值只有乙個時,返回的是生成器物件,而不是具體的值

Python不定長引數

記錄了python函式的不定長引數,用 來接收不定長的資料。在定義函式時,可以在形參前邊加上乙個 這樣這個形參將會獲取到所有的實參,它將會將所有的實參儲存到乙個元組中 a會接受所有的位置實參,並且會將這些實參統一儲存到乙個元組中 裝包 fn3函式的使用 形參可以接收其他的關鍵字引數,它會將這些引數統...

不定長引數 python

如果向乙個函式傳遞的引數的數量每次都不同,想要讓函式去做每次相加或者其他的事的時候,可以用 變數名 傳遞不定長引數,傳進去以後的變數會變成乙個元組def sum a result 0print type a for i in a result i return result result sum 1...

python不定長引數詳解

如果想要乙個函式能不固定接收任意多個引數,可以使用不定長引數。python自定義函式中有兩種不定長引數,第一種是 在傳入額外的引數時可以不用指明引數名,直接傳入引數值即可。第二種是 這種型別返回的是字典,傳入時需要指定引數名。加了乙個星號 不定長引數會以元組 tuple 的形式匯入,存放所有未命名的...