我有以下变量:
InputNumber
(用户定义为1到6),
nameofstate
(2个名字的列表,让他们称之为X和Y)
list[state][protein][counts][x]
list[state][protein][counts][y]
,其中x和y是等于InputNumber
所以InputNumber = 3
list[state][protein][counts][x] = [a,b,c]
list[state][protein][counts][y] = [r,s,t]
InputNumber = 4
list[state][protein][counts][x] = [a,b,c,d]
list[state][protein][counts][y] = [r,s,t,u]
我想为这些计数创建新列,但我无法弄清楚如何制作动态列标题:
Name X1 X2 X3 Y1 Y2 Y3 Name X1 X2 X3 X4 Y1 Y2 Y3 Y4
Name a b c r s t Name a b c d r s t u
以下是我的标题代码:
listheaders = [str(nameofstate[0]) + str(x + 1) for x in range(0, InputNumber), str(nameofstate[1]) + str(x + 1) for x in range(0, InputNumber)]
with open("PATH and NAME" + ".csv", 'w') as myfile:
wr = csv.writer(myfile, delimiter=',', lineterminator='\n')
wr.writerow(["Name", (i for i in listheaders[0]), (e for e in listheaders[1]])
for name in anotherlist:
perform the same iterative code
我的问题在于生成器表达式 - 我无法解释如何告诉它解压缩listheaders
中的条目。
答案 0 :(得分:0)
我不确定我是否会按照您的问题中发生的所有事情进行操作,但似乎您在listheaders中尝试做的太多了。如果我理解正确,你想使用辅助函数来构造
def _get_header_list(name_of_state, input_number):
return ['{}{}'.format(name_of_state, str(x)) for x in range(1, input_number + 1)]
first_list = _get_header_list(nameofstate[0], InputNumber)
second_list = _get_header_list(nameofstate[1], InputNumber)
然后......
wr.writerow(['Name'] + first_list + second_list)