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 回答