назначение списка в python - PullRequest
       0

назначение списка в python

1 голос
/ 09 апреля 2010
pt=[2]
pt[0]=raw_input()

когда я делаю это и даю ввод, предположим, 1011, он говорит об ошибке индексации списка - "индекс назначения списка вне диапазона" могу я узнать почему? Я думаю, что не могу назначить список должным образом. как назначить массив из 2 элементов в Python тогда?

Ответы [ 2 ]

4 голосов
/ 09 апреля 2010

Попробуйте это:

pt = list()
pt.append(raw_input())
pt.append(raw_input())
print pt

Теперь у вас есть два элемента в вашем списке. Как только вы познакомитесь с синтаксисом Python, вы можете написать это так:

pt = [raw_input(), raw_input()]

Также обратите внимание, что списки не следует путать с массивами в Java или C: списки растут динамически. Вам не нужно объявлять размер при создании нового списка.

Кстати: я опробовал ваш пример в интерактивной оболочке. Это работает, но, вероятно, не так, как вы ожидали:

>>> pt = [2]
>>> pt[0] = raw_input()
1011
>>> pt
['1011']

Полагаю, вы думали, что pt = [2] создаст список длиной 2, поэтому pt[1] = raw_input() потерпит неудачу, как вы упомянули:

>>> pt = [2]
>>> pt[0] = raw_input()
1011
>>> pt[1] = raw_input() # this is an assignment to an index not yet created.
1012
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

На самом деле, pt = [2] создает список с одним элементом со значением 2 по индексу 0:

>>> pt = [2]
>>> pt
[2]
>>>

Таким образом, вы можете присвоить индексу 0, как показано выше, но назначение для индекса 1 не будет работать - используйте append для добавления в список.

3 голосов
/ 09 апреля 2010

Непонятно, что вы пытаетесь сделать. Я предполагаю, что вы пытаетесь сделать это:

pt = [2] # Create array with two elements?
for i in range(2):
    pt[i] = raw_input()

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

pt = [None] * 2
for i in range(2):
    pt[i] = raw_input()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...