2013-10-12 74 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 

同樣,你可能不應該使用這個。