1

我有以下具有不同值的示例脚本,我的实际 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值?

谢谢

4

3 回答 3

3

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

而当我们这样做的时候:变量名不是 data。假设 Python 把你的变量名扔掉了。

于 2012-08-28T16:05:55.573 回答
1

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

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'))

你为什么要这样做...¯\_(ツ)_/¯

于 2020-04-02T18:50:35.153 回答
0
all_xy = [value1, value2, value3, ...]
# Note that xy_all[n-1] = valuen

xy_total = sum(all_xy)

如果你想通过 using 来获取它们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 异常。

于 2012-08-28T16:40:35.317 回答