9

我想输入一个未知宽度(列数)的表格,并且我希望我的函数为每一列输出一个列表。我还输出了一个包含上述列表名称的列表。

我正在尝试这个:

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)时,该函数适用,但我试图概括的方式不起作用。

4

2 回答 2

13

从函数返回非常数的变量通常是个坏主意,因为使用它会令人困惑且容易出错。

为什么不将映射标题标题的字典返回到列表?

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

这可以使用字典理解来缩写为:

def crazy_fn(table):
   return {title : VALUE(TITLE) for title in read_col_headers(table)}
于 2012-04-19T07:34:01.973 回答
5

哇,循环太多

就像是:

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

可能会这样做。值得阅读更多关于python 内置函数如何工作的内容。

于 2012-04-19T07:32:09.680 回答