2012-04-19 125 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