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

use*_*633 0 python string loops for-loop simplify

我试图简化代码:

            header = []
            header.append(header1)
            header.append(header2)                
            header.append(header3)
            header.append(header4)
            header.append(header5)
            header.append(header6)
Run Code Online (Sandbox Code Playgroud)

哪里:

            header1 = str(input.headerOut1)
            header2 = str(input.headerOut2)
            header3 = str(input.headerOut3)
            header4 = str(input.headerOut4)
            header5 = str(input.headerOut5)
            header6 = str(input.headerOut6)
Run Code Online (Sandbox Code Playgroud)

我本来想使用for循环,比如:

   headerList = []
   for i in range(6)
          headerList.append(header+i) 
Run Code Online (Sandbox Code Playgroud)

但是,python不会识别标头+ i代表字符串header1.有没有办法简化这个代码或让for循环工作?非常感谢!

Ric*_*dle 9

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

input.headerOut[1]
input.headerOut[2]
# etc.
Run Code Online (Sandbox Code Playgroud)

这将使这更容易,更Pythonic.但你可以做你想要的事情getattr:

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


小智 5

header = [str(getattr(input, "headerOut%d" % x)) for x in range(1,7)]
Run Code Online (Sandbox Code Playgroud)