2012-04-19 116 views
4

我想輸入一個未知寬度(列數)的表格,我希望我的函數爲每列輸出一個列表。我也在輸出一個包含上述列表名稱的列表。python函數返回可變數量的輸出

我想這一點:

def crazy_fn(table): 
    titles=read_col_headers(table) 
    for i in range(1,len(table)): 
     for j in range(0,len(titles)): 
      vars()[titles[j]].append(table[i][j]) 

    return titles, vars()[titles[k]] for k in range(0,len(titles)) 

該功能適用​​於當我知道有多少列/列表,我將輸出(返回標題,A,B,C,d),但我的方式試圖推廣是行不通的。

+2

你能告訴我們什麼'table'樣子:

def crazy_fn(table): result=dict() titles=read_col_headers(table) for title in titles: result[title]=VALUE(TITLE) return result 

這可以使用字典解析縮寫? – 2012-04-19 07:30:29

+0

哪部分似乎不起作用?什麼是輸入/輸出以及錯誤信息是什麼? – 2012-04-19 09:00:36

回答

5

從函數中返回非常量變量通常是一個壞主意,因爲使用它會造成混淆並容易出錯。

爲什麼你不返回一個字典映射標題頭到列表?

def crazy_fn(table): 
    return {title : VALUE(TITLE) for title in read_col_headers(table)} 
+0

我可以將它全部打包在字典中並返回字典。 但是我每次想修改時都需要解壓,我只是想要這一步。加上好奇,如果我想要做的事情是可能的反正。 – user1343236 2012-04-19 07:36:51

+0

你可以用一個字典無法完成哪些修改,你可以使用很多返回值來完成這些修改? – 2012-04-19 07:42:30

+0

字典是要走的路。它使事情變得更簡單。 非常感謝! – user1343236 2012-04-19 07:49:08

5

哇,太多的循環

類似:

def crazy_fn(table): 
    titles = read_col_headers(table) 
    columns = zip(*table[1:]) 
    return titles, columns 

可能會做到這一點。有必要詳細瞭解如何運作python built in functions