0

私はコードを単純化しようとしていました:

            header = []
            header.append(header1)
            header.append(header2)                
            header.append(header3)
            header.append(header4)
            header.append(header5)
            header.append(header6)

どこ:

            header1 = str(input.headerOut1)
            header2 = str(input.headerOut2)
            header3 = str(input.headerOut3)
            header4 = str(input.headerOut4)
            header5 = str(input.headerOut5)
            header6 = str(input.headerOut6)

次のような for ループを使いたいと思っていました。

   headerList = []
   for i in range(6)
          headerList.append(header+i) 

ただし、python は、header+i が文字列 header1 を表すことを認識しません。このコードを単純化する方法や for ループを機能させる方法はありますか? どうもありがとう!

4

4 に答える 4

9

次のように、実際にはデータをリストまたは辞書として構造化する必要があります。

input.headerOut[1]
input.headerOut[2]
# etc.

これにより、これがはるかに簡単になり、より Pythonic になります。しかし、あなたはあなたが望むことをすることができますgetattr:

headerList = []
for i in range(1, 7):
    header = str(getattr(input, 'headerOut%d' % i))
    headerList.append(header)
于 2009-07-02T17:24:58.303 に答える
5
header = [str(getattr(input, "headerOut%d" % x)) for x in range(1,7)]
于 2009-07-02T17:24:40.957 に答える
2

ヘッダーを配列に入れてループします。

于 2009-07-02T17:21:30.180 に答える
2

localsローカル スコープを dict として取得するために使用できます。

headerList = []
for i in xrange(1, 7):
    headerList.append(locals()['header%s' % (i,)])

ただし、可能であれば、input他の回答のいくつかが示唆しているように、変数を直接使用する必要があります。

于 2009-07-02T17:22:49.180 に答える