我想输入一个未知宽度的表(列数),我希望我的函数输出每列的列表。我还输出一个包含所述列表名称的列表。
我正在尝试这个:
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)时,该函数可用,但我尝试概括的方式不起作用。
答案 0 :(得分:8)
从函数返回非常数量的变量通常是一个坏主意,因为使用它会让人感到困惑和容易出错。
为什么不返回将标题标题映射到列表的字典?
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)}
答案 1 :(得分:5)
哇,太多循环
类似的东西:
def crazy_fn(table):
titles = read_col_headers(table)
columns = zip(*table[1:])
return titles, columns
可能会这样做。值得一读的更多关于python built in functions的工作方式。