我有一個功能:
def process(fa : {str:{str:str}}, state : str, inputs : [str]) -> [None]:
并且引數的 ( state : str, inputs : [str]) 引數將來自檔案 (input_file.txt) 的內容:
even;1;0;1;1;0;1
even;1;0;1;1;0;x
odd;1;0;1;1;0;1
與state為第一元件(偶/奇)和inputs作為元件的其余部分的串列(1,0,x)的
是否可以將檔案中的內容作為引數傳遞給函式?
我試過理解,但回傳值與我想要得到的值相差無幾,而且我不知道在玩了一會兒之后還能嘗試什么:
proccess( fa, (item[0] for line in input_file for item in line.split(';')), (item[1:] for line in input_file for item in line.split(';') )
uj5u.com熱心網友回復:
像這樣的事情應該這樣做:
for line in open('input_file.txt','rt'):
state,*inputs = line.strip().split(';')
process(fa,state,inputs)
uj5u.com熱心網友回復:
for line in input_file for item in line.split(';')
這將為每一行中的每個元素回傳一個迭代器,因此:
even
1
0
1
1
0
1
even
1
...
您的item[0]和item[1:]不會導致錯誤,因為每個字串(“偶數”、“1”等)都可以編入索引。
你可能可以嘗試類似的東西:
proccess( fa,
(line.split(';')[0] for line in input_file),
(line.split(';')[1:] for line in input_file)
)
順便說一下,您應該注意:1)您正在重復split()呼叫,2)如果input_file是一個檔案,那么行只通過一次,3)您傳入的是生成器而不是 func 期望的字串/字串串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/310927.html
上一篇:回溯(最近一次呼叫):<module>中的檔案“D:\Python\PLAY.PY”,第29行
下一篇:提取包含數字的句子
