【问题标题】:python function that returns a variable number of outputs返回可变数量输出的python函数
【发布时间】:2012-04-19 07:26:16
【问题描述】:

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

我正在尝试这个:

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

【问题讨论】:

  • 你能告诉我们table的样子吗?
  • 哪一部分似乎不起作用?输入/输出是什么,错误信息是什么?

标签: python python-2.7


【解决方案1】:

从函数返回的变量数量非常多通常是个坏主意,因为使用它会造成混乱且容易出错。

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

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)}

【讨论】:

  • 我可以把它全部打包到一个字典里然后返回字典。但是每次我想进行修改时都必须打开包装,我只是想要这一步。 Plus很好奇我想做的事情是否可行。
  • 哪些修改不能用字典来做而你可以用许多返回值做?
  • 字典是要走的路。它使事情变得简单得多。非常感谢!
【解决方案2】:

哇,循环太多了

类似:

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

可能会这样做。值得阅读更多关于python built in functions 工作原理的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2011-11-25
    • 2015-09-04
    相关资源
    最近更新 更多