2013-10-12 73 views
0

创建具有名称的变量我想用类似于如下的实际工作的一些代码:Python从范围

P = 20 
n = 1 
for x in range(1, P+1): 
    Ax = n #Hoping that you can name the variable from the current element in the range 
    n = n+1 

我要让可变因素A1,A2,A3 .... A20他们将有在这个例子中值为1,2,3 ... 20 ...

这是否可能,以及它需要什么编码?

干杯

+5

你**真的**不想这样做。改用列表。[将数据保留在变量名称之外](http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html)。 –

回答

2

你实际上并不想这样做。相反,你想是这样的:

P = 20 
n = 1 
A = []  # Or `A = list()` 
for x in range(1, P+1): 
    A.append(n) 
    n += 1 

然后,而不是A0,你做A[0]和替代A5你做A[5]

Here是Python 3.x的列表文件(我假设你正在使用Python 3.X由于使用range,而不是xrange

而且,据我所知,你的代码可能仅仅是这样的:

P = 20 
A = [] 
for x in range(1, P+1): 
    A.append(x) 

或者这样:

P = 20 
A = [i for i in range(1, P+1)] 

(见文档list comprehensions,一Python中的非常有用的功能)

甚至:

P = 20 
A = list(range(1, P+1)) 
1

不要试图动态命名变量。这样疯狂的谎言。

相反,利用python的数据结构来做你想做的事情。在大多数情况下,人们确实希望使用dictlist

a = {} 

for x in range(1,21): 
    a[x] = x**2 


b = [] 

for x in range(1,21): 
    b.append(x**2) 

你会感觉到什么时候你想使用一个。例如,在上面如果我需要快速查找给定整数的平方,我会使用dict。如果我只是需要对1到20之间的方块进行一些操作,那就是当我使用list时。

琐碎的例子,但是这可以根据需要进行扩展。任何可排序的数据类型都可以成为字典中的关键字,所以您不再受限于使用笨重的字母和数字命名变量 - 任何对象都会这样做!

0

我几乎同意所有的答案和评论你到目前为止: 99.99%的时间,你不想这样做。这是危险的,丑陋的和坏的。

但是有一个办法做到这一点,利用exec

P = 20 
n = 1 
for x in range(1, P+1): 
    exec("A{} = n".format(x)) 
    n = n+1 

同样,你可能不应该使用这个。