使用for循环简化数据(Python)

使用for循环简化数据(Python),python,string,loops,for-loop,simplify,Python,String,Loops,For Loop,Simplify,我试图简化代码: header = [] header.append(header1) header.append(header2) header.append(header3) header.append(header4) header.append(header5) header.append(

我试图简化代码:

            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循环工作?非常感谢你

将标题放入数组并循环。

您可以使用以dict形式获取本地范围的标题:

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

但是,如果可能的话,您应该直接使用
输入
变量,正如其他一些答案所建议的那样。

您应该真正将数据结构为列表或字典,如下所示:

header = [str(getattr(input, "headerOut%d" % x)) for x in range(1,7)]
input.headerOut[1]
input.headerOut[2]
# etc.
这将使这更容易,更具蟒蛇式。但是您可以使用
getattr
执行您想要的操作:

headerList = []
for i in range(1, 7):
    header = str(getattr(input, 'headerOut%d' % i))
    headerList.append(header)

我只是有一个关于这个的快速问题,我以前从未见过%(我,)这个。它到底做什么?谢谢这是字符串格式化操作符。请查看此处的文档:…如果使用列表,则第一个将被输入。headerOut[0]。同意@JohnPirie,+1,因为有许多新颖的答案,但只有一个可以生成易于理解的代码。任何人都对如何标记此问题有疑问。我们需要“for”、“loop”和“simplify”吗?