2016-08-31 86 views
0

我想在循環中使用索引來命名和訪問變量。 這是一個有點硬代碼我想實現表達,但輸出是最重要的事情:Python:使用循環的名稱和訪問變量

i = 0 
while i < len(myAr): #myAr is an array that has different length each run 
    var_i = i*5  
    print (var_i) 
    i = i+1 

    #So, say, len(myAr) = 3, my output will be: 
    var_0 = 0 
    var_1 = 5 
    var_2 = 10 

在以前的職位,建議我已經使用列表試過了,但是,這不是我是誰在'list'解決方案中查找我無法真正訪問變量,但只能訪問列表中的位置。 或換句話說,我不能直接調用該變量,而只能在列表中調用它的位置。

+1

你想乘元素的5索引或5元素本身?我真的不明白你想要什麼。 – Harrison

+1

字典能爲你工作嗎?即'myvars ['var_0'] = 0'然後作爲'myvars ['var_0']' – FamousJameous

+0

訪問字典會更合適嗎?訪問變量是什麼意思?在Python中,變量是引用對象的名稱,僅此而已。你的意思是在數組模塊中使用數組還是其他? https://docs.python.org/3/library/array.html – cdarke

回答

2
from itertools import count 

variables = {} 

myAr = 'adf' 
counter = count() 
i = counter.next() 

while i < len(myAr): #myAr is an array that has different length each run 
    var_name = 'var_{}'.format(i) 
    variables[var_name] = i*5 
    print variables[var_name] 
    i = counter.next() 

locals().update(variables) 
print var_0, var_1, var_2 
+1

'本地人()'不會做你認爲它在這裏做的事......它不應該發生變異...... –

+0

@NinjaPuppy謝謝。 – turkus

+0

這應該工作,但是,有沒有辦法使用循環訪問這些變量呢?即: 'while counter Yair

2
myAr = [1,2,3] 

for i in range(len(myAr)): 
    val = i * 5 
    print val 

myAr長度爲3,這是輸出:

0 
5 
10 

如果您所要的輸出酷似你在問題中所提供的輸出,你會改變打印線此:其中print 'var_{} = {}'.format(i, val)此示例將輸出:

var_0 = 0 
var_1 = 5 
var_2 = 10 
+0

想法是,該變量將被命名爲: var_0,var_1等......不僅是打印輸出。 – Yair

0
i=0; 
while i<3: 
    var_i=i*5 
    print(var_i) 
    i=i+1 

這是輸出,您可以根據需要操作它。

輸出:

sh-4.3$ python main.py                                    
0                                         
5                                         
10