2014-12-14 3 views
2
c = int(input('somenumber')) 
p = 0 
while p < c: 
    test = [1, 2] 
    test.append(p) 
    p = p + 1 

Я хочу, чтобы добавить номера в список, но я не хочу использовать sort (так как они не являются арифметическая прогрессия, это просто тестовый пример, и я знаю, сортировки может быть использован). Вышеупомянутый код я пытался что-то сделать, но приведенный выше код буквально ничего не делает (что с ним не так?Добавление номеров в списки в питона

+0

Обратите внимание, что вы продолжаете переопределять список * внутри цикла *. – jonrsharpe

+0

Спасибо за быстрый ответ, я пытаюсь добавить определенные числа в список, который не обязательно находится в AP. как [1, 2, 3, 4 ...]. В этом примере я хочу, чтобы элемент out был [1, 2, и у меня есть алгоритм, который генерирует эти числа, я просто хочу поместить его в список. – Vrisk

+1

Да, но точка стоит - вам нужно инициализировать список * вне цикла *. – jonrsharpe

ответ

1

Ввод test = [1, 2] внутри цикла означает, что вы получите только 1,2, а последние p добавлены в список, вы необходимо инициализировать список вне цикла в то время как:.

c = int(input('somenumber')) 
p = 0 
test = [1, 2] # outside loop 
while p < c:  
    test.append(p) 
    p += 1 
print(test) # print test to see the contents when the loop finishes 


In [1]: for i in range(3): 
    ...:  test = [] # keeps resetting test to an empty list 
    ...:  test.append(i) 
    ...:  print(test,i) 
    ...:  
([0], 0) 
([1], 1) 
([2], 2) 

In [2]: test = [] # initialised outside the for loop so we get all elements appended 

In [3]: for i in range(3): 
    ...:  test.append(i) 
    ...:  print(test,i) 
    ...:  
([0], 0) 
([0, 1], 1) 
([0, 1, 2], 2) 
+0

Ya! , Я получил ожидаемый результат
Но я не понимаю, какая разница между помещением списка внутри цикла и вне цикла? – Vrisk

+0

вы продолжаете делать тест равным '[1,2]' на каждой итерации, ставьте «тест печати» внутри цикла while в свой код, чтобы видеть. –

0

Я думаю, что проблема в том, вы инициализации список тестов вне цикла

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

c = int(input('somenumber')) 
p = 0 
test = [1, 2] 
test.extend(range(p, c)) 
print (test) 
+1

Нет необходимости в 'x for x in ...', это избыточно. 'test.extend (range (p, c))' is fine –

+0

thanks @JonClements, только что отредактированный с помощью подсказки – Riccardo

+1

В вашем текущем ответе нет списка. – martineau

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