2016-03-30 2 views
2

Я новичок в Python и программировании вообще, и поэтому я просто пытаюсь изучить некоторые основы.Python: Как сделать n новых списков из n входов?

В принципе, прямо сейчас у меня есть пользовательский ввод n количество целых чисел, скажем 2, 3 и 12. Эти числа помещаются в список под названием «числа». Из этого списка я хочу, чтобы каждый номер составлял новый список всех натуральных чисел вплоть до этого числа.

Например:

inputs = 2, 4, n 
numbers = [2, 4, 10] 
list 1 = [1, 2] 
list 2 = [1, 2, 3, 4,] 
list 3 = [1, 2, ..., n-1, n] 

Мои первые мысли были сделать цикл по номерам, но как на самом деле сделать п количество списков меня ускользает.

Любая помощь приветствуется, спасибо!

+0

'[список (диапазон (1, n + 1)) для n в числах]'? – univerio

ответ

1

Pythons range() Функция является хорошим полезна для этого.

Вы должны составить список список, где вы можете индексировать список как:

list1 = list_of_list[0] 
list2 = list_of_list[1] 
list3 = list_of_list[2] 

если вы получаете ввод чисел в списке, как вы упомянули

>>>numbers = [2, 4, 10] 
>>>list_of_list = [list(range(1, n+1)) for n in numbers] 

В вывод будет выглядеть так:

>>>list_of_list 
>>>[[1, 2], [1, 2, 3, 4], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]] 

Это называется пониманием списка в python. Вы выполняете итерирование по номерам списков и для каждого номера, вызывая диапазон и отбрасывая его как список.

+0

Удивительно, большое вам спасибо! Это было намного проще решения, чем я ожидал. –

0

Вы не сможете динамически получать переменные «list1», «list2» и «list3» в цикле. То, что вы хотите сделать, это сделать переменную с вложенными списками.

numbers = [2, 4, 6] 

lists = [] // Initialize it as an empty list 

Здесь каждая итерация добавляет список с последовательностью от 1 до п + 1, так что вы получите желаемый [1, 2] с первым входом.

for n in numbers: 
    lists.append(range(1, n+1)) 

После этого вы всегда можете взять каждый список, и поместить его в его собственной переменной, но имея добавить «listx» каждый раз, когда вы изменяете вход не является идеальным.

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