Вставка Python не дает желаемых результатов? - PullRequest
6 голосов
/ 04 октября 2009
#!/usr/bin/python

numbers = [1, 2, 3, 5, 6, 7]

clean = numbers.insert(3, 'four')

print clean
# desire results [1, 2, 3, 'four', 5, 6, 7]

Я получаю "Нет". Что я делаю не так?

Ответы [ 5 ]

16 голосов
/ 04 октября 2009

Методы Mutating в списках, как правило, возвращают None, , а не измененный список, как вы ожидаете - такие методы выполняют свое действие, изменяя список на месте, а не создавая и возвращая новый один. Таким образом, print numbers вместо print clean покажет вам измененный список.

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

clean = list(numbers)
clean.insert(3, 'four')

это имеет тот общий эффект, который вам нужен: numbers без изменений, clean - измененный список.

9 голосов
/ 04 октября 2009

Метод вставки изменяет список на месте и не возвращает новую ссылку. Попробуйте:

>>> numbers = [1, 2, 3, 5, 6, 7]
>>> numbers.insert(3, 'four')
>>> print numbers
[1, 2, 3, 'four', 5, 6, 7]
2 голосов
/ 04 октября 2009

Оператор list.insert () ничего не возвращает, что вы, вероятно, хотите:

print numbers
1 голос
/ 04 октября 2009

insert вставит элемент в указанный список. Напечатайте числа вместо этого, и вы увидите свои результаты. insert не возвращает новый список.

0 голосов
/ 08 марта 2019
a=[1,2,3,4,5]
a.insert(2,"hello world")
print(a)

ответ: [1, 2, 'hello world', 3, 4, 5]

если я использую это

a=[1,2,3,4,5]
print(a,a.insert(2,"hello world"))

ответ: [1, 2, 'hello world', 3, 4, 5] None

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