我试图简化代码:
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不会识别标头+ i代表字符串header1。有没有办法简化这个代码或让for循环工作?非常感谢你!
答案 0 :(得分: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)
答案 1 :(得分:5)
header = [str(getattr(input, "headerOut%d" % x)) for x in range(1,7)]
答案 2 :(得分:2)
将标题放在一个数组中并循环遍历它。
答案 3 :(得分:2)
您可以使用locals
将本地范围作为dict:
headerList = []
for i in xrange(1, 7):
headerList.append(locals()['header%s' % (i,)])
但是,如果可能的话,您应该直接使用input
变量,因为其他一些答案也是如此。