高效/ pythonic方式管理打印输出的标题列表和变量列表

时间:2018-04-29 13:50:27

标签: python

管理标题列表和关联变量列表(更改一个并自动/轻松更改另一个)的高效/ pythonic方式是什么?

在这里的示例中,我希望定义标题列表旁边的变量列表,并且在代码中间不远处。 (在我的20 +字段的实际代码中,数百行代码,以及我希望调用add_row()的几个地方,这是非常重要的)

import prettytable as prt 

my_header=["bar","foo","bla"]
#my_row=[var1, some_var,c] ## I WOULD HAVE LIKED DO DEFINE THE LIST OF VARIABLES HERE, NEXT TO THE LIST OF THIER NAMES    
output_table=prt.PrettyTable(my_header)

for i in range(10):
    var1,some_var,c=i,2*i,i**2
    my_row=[var1, some_var,c] ## I AM FORCED TO DEFINE THE LIST HERE, AFTER ASSIGNING THE VARIABLES, AND BEFORE CALLING add_row() 
    output_table.add_row(my_row)

print output_table

--- ---更新

我想这就是我想要的代码,但它似乎不是“pythonic”方式...

import prettytable as prt 


var1,some_var,c=[0],[0],[0]
my_row=[var1, some_var,c] 
my_header=["bar","foo","bla"]
output_table=prt.PrettyTable(my_header)

for i in range(10):
    var1[0],some_var[0],c[0]=i,2*i,i**2
    output_table.add_row([str(i[0]) for i in my_row])


print output_table

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点。最好的方法取决于实际计算行内容的详细信息。对于您的问题中给出的简单示例,您可以创建一个计算行内容的函数。例如,

my_header = ["bar","foo","bla"]
def my_row(i):
    return [i, 2*i, i**2]

print(my_header)
for i in range(10):
    print(my_row(i))

<强>输出

['bar', 'foo', 'bla']
[0, 0, 0]
[1, 2, 1]
[2, 4, 4]
[3, 6, 9]
[4, 8, 16]
[5, 10, 25]
[6, 12, 36]
[7, 14, 49]
[8, 16, 64]
[9, 18, 81]

但是如果计算更复杂,你可能会发现使用类来管理事物会更好。您可能希望使用@property装饰器来执行计算。