如何在另一个变量中包含变量

时间:2012-03-02 19:05:56

标签: python arrays python-3.x

我有一组变量:x1x2x3x4x5

x1 = 10
x2 = 20
x3 = 30
x4 = 40
x5 = 50
number=1
for looper in range(0,4):
    xnumber = xnumber + 10
    number = number + 1

获取:x1 = 20x2 = 30等 因为我得到了:

"'xnumber' is not defined"

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

改为使用数组,定义x[0] ... x[4]并将xnumber替换为x[number]。此外,您可以不定义number并使用循环索引:

x = range(5)
x[0] = 10
x[1] = 2
x[2] = 30
x[3] = 40
x[4] = 50
for i in range(0,5):
    x[i] = x[i] + 10

答案 1 :(得分:3)

最好使用一个列表:

x = [10, 2, 30, 40, 50]
for index, value in enumerate(x):
    x[index] = value + 10

或dict,如果你想要一些'名字'代表你的价值观:

x = {'x1': 10, 'x2': 2, 'x3': 30, 'x4': 40, 'x5': 50}
for key, value in x.items():
    x[key] = value + 10

或班级:

class x:
    x1 = 10
    x2 = 2
    x3 = 30
    x4 = 40
    x5 = 50

for index in range(1, 6):
    attr_name = 'x%d' % index
    setattr(x, attr_name, getattr(x, attr_name) + 10)

答案 2 :(得分:0)

整数不可变。获得所需内容的唯一方法是将每个变量重新分配给一个新的整数,并且必须单独对每个变量执行此操作 - 无法创建循环来执行此操作。

作为我的意思的一个例子,如果值是可变的,这就是你可以做的。我已经将每个变量更改为包含列表而不是int。

x1=[10]
x2=[20]
x3=[30]
x4=[40]
x5=[50]
vars = [x1, x2, x3, x4, x5]
for looper in range(0,4):
    vars[looper][0] = vars[looper][0] + 10
print x1,x2,x3,x4,x5
[20] [30] [40] [50] [50]

请注意,looper最多只能达到3,所以它会错过x5

答案 3 :(得分:0)

使用字典。

>>> d = {'x1':10,'x2':20,'x3':30,'x4':40,'x5':50}
>>> for key in d:
...   d[key] = d[key] + 10
>>> for key in sorted(d):
...   print key, '=', d[key]
...
x1 = 20
x2 = 30
x3 = 40
x4 = 50
x5 = 60