Уточнение списка Python: прямое присвоение значений невозможно - PullRequest
0 голосов
/ 09 декабря 2018

Учитывая value = [], в чем разница между следующими фрагментами кода?

фрагмент 1:

for i in range(t):
    value[i] = 'yes'

фрагмент 2:

value += input.split()

ВВ первом случае я получаю сообщение об ошибке «IndexError: индекс назначения списка вне диапазона»

Второй случай, похоже, работает правильно, без ошибок.

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Ваш первый пример пытается получить доступ к i -ому элементу списка и установить его значение.Поскольку ваш список является пустым списком, этот элемент не существует, и поэтому вы получаете сообщение об ошибке.

Чтобы этот первый фрагмент работал, вам потребуется append значения:

values = []
for i in range(t):
    values.append(i)

Во втором примере используется тот факт, что при добавлении двух списков с + вы создаете новый список со всеми элементами второго существа в конце.При использовании += этот новый список снова присваивается values.

Второй фрагмент также может использовать extend:

values.extend(input.split())
0 голосов
/ 09 декабря 2018

В первом примере вы пытаетесь вставить 'yes' в список с индексом, которого у него нет.(Поскольку пустой список не имеет позиции для вставки чего-либо.)

Во втором примере вы расширяете список элементами итерируемого input.split() 1 , потому что

my_list += iterable

эквивалентно

my_list.extend(iterable)

Демо:

>>> my_list = []
>>> my_list.extend('Hi Sree'.split())
>>> my_list
['Hi', 'Sree']
>>> 
>>> my_list = []
>>> my_list += 'Hi Sree'.split()
>>> my_list
['Hi', 'Sree']

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...