

Python初心者です．  
以下のサンプルを用いて  
No.1_000.csv, No.1_001.csv, No.1_002.csv,,,,,をdata[0], data[1], data[2],,,,,  
に格納しています．  

[code]

    i=0
    data=[]
    while(i<141):
        data.append(pd.read_csv('No.1_%03d.csv'%i,sep=',',header=None))
        i+=1
    
[/code]

ただ本当は，No.1の部分もNo.1～No.100まで変動させてcsvを代入したいです．  
調べてみたところdata[]をdata1[],data2[],....に代入することがexec関数で可能だそうですが，変数を動的にするのはオススメではなく，リストだけで対処することが推奨されていました．

今回のケースのように，exec関数を用いずに複数の変数を一度に取り扱いたい場合はどのようにしたらよいのでしょうか？


CC BY-SA 3.0
2017-07-13T13:09:25.437
36330
2017-07-14T09:06:34.647
2017-07-14T09:06:34.647
3054
23647
question
python python3
execで連番の変数名を動的に生成するのに代る方法


リストのリストを作ればいいですね。

[code]

    data = []
    for n in range(1, 101):
        wk = []
        for i in range(141):
            wk.append(pd.read_csv('No.%d_%03d.csv'% (n, i), sep=',', header=None))
        data.append(wk)
    
    data[0][0]  #=> means data of No.0_000.csv'
    data[4][120]  #=> means data of No.4_120.csv'
    
[/code]

エラー処理を何にもしないなら

[code]

    data = [[pd.read_csv('No.%d_%03d.csv'% (n, i), sep=',', header=None) for i in range(141)] for n in range(1, 101)]
    
[/code]

でいいんですが。(いつか思い出してもらえればそれでいいです)

>
> 調べてみたところdata[]をdata1[],data2[],....に代入することがexec関数で可能だそうですが，変数を動的にするのはオススメではなく，リストだけで対処することが推奨されていました．

なぜ data1, data2,,, としない(したくない)かというと **使いづらくて大変なだけ** だからでしょう。


CC BY-SA 3.0
2017-07-13T13:59:26.697
36333
2017-07-13T13:59:26.697
12274
36330
answer