1

入力として n 個のリストを収集したいとしましょう。私がやっていたことは次のとおりです。

l=[]
for i in range(n):
    row=map(int,raw_input().split())
    l.append(row)

そして、l[0]、l[1]、...、l[n] でそれらのリストにアクセスしていました。

これを行うためのよりエレガントな方法はありますか?for ループ内で、row1、row2、...、row などの名前で変数を動的に作成するようなものですか?

4

3 に答える 3

2

動的変数を作成する方法を自問するときはいつでも、答えは「辞書を使用する」です。

l=dict()
for i in range(n):
    k='row%d'%(i,)
    l[k] = map(int, raw_input().split())
于 2013-06-12T20:30:23.117 に答える
1

最初は良いアイデアのように思えるかもしれませんが、一度試してみると、名前空間を汚染することは洗練されていないことに気付くでしょう。

リストを作成する通常の方法は、このネストされたリスト内包表記です

rows = [[int(j) for j in i] for i in raw_input().split()]

mapそれがあなたにとってより明確であれば、あなたはそこに投げ込むことができます

rows = [map(int, i) for i in raw_input().split()]

次にrows[0]rows[1]... などがありますが、これは ... とそれほど変わらず、row0 row1名前空間に関してはるかに受け入れられます

于 2013-06-12T20:31:26.030 に答える
0

私の意見では、これは任意の数の整数を格納する最良の方法です。主に後でそれらをどのように使用するかという理由で、その場で変数を作成したくありません。たとえば、23 番を使用したい場合、簡単にl[22]番号を取得し、23 番未満の数字が入力された場合に対処できます。

try:
    print l[22]
except IndexError:
    print "No element 22!"

宣言されていない可能性のある変数を呼び出すために別の変数名を使用するだけでは、はるかに困難になります。

さらに、この方法を使用len(l)して、いくつの数値があるかを調べることができますが、変数を使用するlocals()と、何か面倒なことをしなければならず、それは良い考えではありません.

于 2013-06-12T20:32:37.980 に答える