2013-11-16 3 views
0

Я хотел бы создать код, в котором я мог бы автоматически создавать (n) числа списков, не создавая их один за другим. Я пробовал этот пример, где я хотел получить пять списков с именем «my_list» автоматически, где каждый список назначил десять чисел от 0 до 9 (например).Автоматическое создание списков

for i in range(1,6): 
    ("my_list_"+str(i)) = [] 
    for j in range(10): 
     ("my_list_"+str(i)).append(j) 

Послания: «SyntaxError: не может назначить оператор»

Это просто пример, реальная проблема заключается в том, чтобы автоматически получить списки, не создавая их один за другим. Можно ли это сделать в Python? Спасибо

ответ

0

Что вы делаете здесь является то, что вы пытаетесь присвоить список в строку. Вы не можете сделать это. Если вам нужно создать много списков, сначала создайте еще один единственный список, чтобы сохранить их все. Как это:

my_lists = [] 
for i in range(1,6): 
    new_list = [] 
    for j in range(10): 
     new_list.append(j) 
    my_lists.append(new_list) 

Если вам не нравится это, и хотите, чтобы достичь этих списков из глобального масштаба с использованием имени переменной, как my_list_3, вы можете попробовать немного трюк, как это:

for i in range(1,6): 
    globals()["my_list_"+str(i)] = [] 
    for j in range(10): 
     globals()["my_list_"+str(i)].append(j) 

print my_list_3 

Это будет печатать [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

+1

Второй способ - это то, что я искал. Благодаря! – user2979268

+1

Добро пожаловать, но второй способ не очень распространен, и я сомневаюсь, что это считается хорошим программированием. Если вы занимаетесь серьезной работой, я настоятельно рекомендую вам привыкнуть к первому пути. –

+0

Проблема в том, что после того, как я должен использовать списки, вызывающие их по имени. Например, мне нужно напечатать «my_list_2» или для каждого элемента в «my_list_1», я должен умножить их на 2. То, что я хотел найти, - это способ автоматического создания списков, а затем использовать их, называя их по имени. – user2979268

0

Вы можете легко создать список списков используя списковые:

my_lists = [range(10) for _ in xrange(5)] 
0

Использование функции:

>>> auto_list = lambda n: [[] for _ in range(n)] 
>>> auto_list(10) 
[[], [], [], [], [], [], [], [], [], []] 

Если вы хотите для каждого списка будет сгенерирована с сказать случайных чисел:

from random import randint 


def auto_list(n): 
    return [[randint(0, 100) for _ in range(5)] for _ in range(n)] 


print auto_list(10) 

Возвращает:

[[86, 33, 82, 28, 20], 
[13, 89, 22, 8, 73], 
[83, 44, 58, 71, 21], 
[66, 54, 41, 24, 8], 
[74, 98, 89, 53, 40], 
[63, 83, 13, 72, 68], 
[51, 55, 61, 36, 34], 
[38, 72, 95, 58, 82], 
[80, 16, 10, 44, 22], 
[9, 65, 84, 14, 91]] 
0
n = 40 
my_lists = [] 


for i in range(1,40): 
    my_lists.append([]) 

for list in my_lists: 
    list.append(3) 
0

нормальный, регулярный способ обработки такого рода требования заключается в том, чтобы держать ключевые слова в словаре, а не как имена переменных с суффиксом.

my_list=dict() 
for i in range(1,6): 
    my_list[i] = [] 
    for j in range(10): 
     my_list[i].append(j) 
Смежные вопросы