Python,对一大组变量进行分组

时间:2012-08-28 16:04:25

标签: python variables sum

我有以下不同值的示例脚本,我的实际xy列表要大得多:

xy1 = value1
xy2 = value2
xy3 = value3
xy4 = value4
xy5 = value5
xy6 = value6
xy7 = value7
xy8 = value8
xy9 = value9

xytotal = sum((xy1,xy2,xy3,xy4,xy5,xy6,xy7,xy8,xy9))

当我有数千个这样的xy变量时会出现问题,将它们全部添加到sum函数中会变得很繁琐。

现在有办法告诉python为每个不同的xy(xy1,xy2,xy3等等)的所有xy值求和吗?

由于

3 个答案:

答案 0 :(得分:3)

不要使用单独的变量。如果您的数据足够复杂,请使用列表,可能与其他数据结构混合使用。

虽然我们在这里:Variable names aren't data。假设Python抛出你的变量名。

答案 1 :(得分:1)

回答您的问题,是的,您可以在脚本中声明一堆xy变量并将它们求和:

<p>{{ 'your text'|upper }}</p>

为什么要这么做... xy1 = 1 xy2 = 2 xy3 = 3 xy4 = 4 xy5 = 5 xy6 = 6 xy7 = 7 xy8 = 8 xy9 = 9 xy10 = 10 cached = locals() xytotal = sum(cached[k] for k in locals() if k.startswith('xy'))

答案 2 :(得分:0)

all_xy = [value1, value2, value3, ...]
# Note that xy_all[n-1] = valuen

xy_total = sum(all_xy)

如果您想使用all_xy[n] = valuen抓取它们,则可以使用all_xy = [0, value1, value2, value3, ...]

使用列表结构在Python中绝对是首选使用变量名称,一方面可以轻松编写列表推导,例如:

positive_xy = [ xy for xy in all_xy if xy>0 ]
positive_xy_total = sum(positive_xy)

另一种选择是使用字典。

了解您是否在startswith('xy')中查看locals()的另一个原因是您可以轻松地尝试对“意外”变量求和,例如一个函数,它会导致Python异常。