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 に答える