2013-12-23 3 views
2

Как может генерировать несколько массив с этим синтаксисом result0, Result1, result2 и т.д ..Динамическое имя массива

Я попробовал это, и эту работу:

for i in xrange(0, 7): 
     var_num = i 
     globals()['result%s' % var_num] = [] 
     globals()['result%s' % var_num].append(1000+i) 
     print ['result%s' % var_num][0] 

это дает мне тезисы массива:

result0 
result1 
result2 
result3 
result4 
result5 
result6 

Но я уверен, что есть еще один способ сделать это? ...

Благодаря

+2

Правильный ответ «не надо». Каков ваш реальный прецедент? Возможно, что-то похожее на defaultdict списков. (Также: списки Python не являются массивами - там * - библиотеки, предлагающие массивы для Python, но это не они, но это отдельное обсуждение). –

+1

http://nedbatchelder.com/blog/201112/keep_data_out_of_your_variable_names.html – wim

+0

Обычно это не считается хорошей практикой на любом языке, который ее поддерживает. По некоторым причинам см. [_Почему вы не хотите создавать динамические переменные_] (http://stupidpythonideas.blogspot.com/2013/05/why-you-dont-want-to-dynamically-create.html) и [_Never использовать динамические имена переменных_] (http://www.techrepublic.com/blog/it-security/never-use-dynamic-variable-names/). – martineau

ответ

3

Как насчет использования словаря.

>>> variables = {} 
>>> for i in xrange(0, 7): 
...  variables['result%s' % i] = [1000 + i] 
... 
>>> variables 
{'result6': [1006], 'result4': [1004], 'result5': [1005], 'result2': [1002], 'result3': [1003], 'result0': [1000], 'result1': [1001]} 
>>> variables['result2'] 
[1002] 
>>> variables['result6'] 
[1006] 
1

Почему вы хотите иметь такое? Почему не просто массив массивов? Вы сможете легко перебирать массивы, когда вы держите их в другом массиве.

Смежные вопросы