Вставка строки в список без разделения на символы

113

Я новичок в Python и не могу найти способ вставить строку в список, не разбивая ее на отдельные символы:

>>> list=['hello','world']
>>> list
['hello', 'world']
>>> list[:0]='foo'
>>> list
['f', 'o', 'o', 'hello', 'world']

Что делать, чтобы:

['foo', 'hello', 'world']

Искал документы и Интернет, но это был не мой день.

Дирадж Вепакомма
источник

Ответы:

147

Чтобы добавить в конец списка:

list.append('foo')

Чтобы вставить в начало:

list.insert(0, 'foo')
Рэйф Кеттлер
источник
Я уверен, что большинство людей знают это, но просто добавлю: выполнение list2 = list1.append('foo')или list2 = list1.insert(0, 'foo') приведет list2к значению None. Оба appendи insertявляются методами, которые изменяют список, в котором они используются, а не возвращают новый список.
MoltenMuffins
19

Придерживаясь метода, которым вы его вставляете, используйте

list[:0] = ['foo']

http://docs.python.org/release/2.6.6/library/stdtypes.html#mutable-sequence-types

Якс
источник
Эта вставка назначения среза выполняется быстрее, чем list.insert () Раффа Кеттлера. См. Добавление столбца в двумерный массив . Не то чтобы это обычно имело значение.
ChaimG
15

Другой вариант - использовать перегруженные + operator:

>>> l = ['hello','world']
>>> l = ['foo'] + l
>>> l
['foo', 'hello', 'world']
juliomalegria
источник
1
Только что видел, вы также можете использовать его для добавления в конце: l += ['foo']
Toni Homedes i
6

лучше всего заключить foo в скобки и использовать + =

list+=['foo']
Rik
источник
5
>>> li = ['aaa', 'bbb']
>>> li.insert(0, 'wow!')
>>> li
['wow!', 'aaa', 'bbb']
Mac
источник
4

Не используйте список в качестве имени переменной. Это встроено в то, что вы маскируете.

Для вставки используйте функцию вставки списков.

l = ['hello','world']
l.insert(0, 'foo')
print l
['foo', 'hello', 'world']
Спенсер Рэтбун
источник
Это не совсем правильно. insert()принимает второй аргумент.
Rafe Kettler
@RafeKettler Упс, append - это без аргумента места.
Spencer Rathbun
2

Вам необходимо добавить еще один список:

list[:0]=['foo']
Какой-то чувак-программист
источник
0
ls=['hello','world']
ls.append('python')
['hello', 'world', 'python']

или (используйте insertфункцию, в которой вы можете использовать позицию индекса в списке)

ls.insert(0,'python')
print(ls)
['python', 'hello', 'world']
Абхишек Патил
источник
-2

Предлагаю добавить оператор '+' следующим образом:

список = список + ['фу']

Надеюсь, поможет!

Антонио Морено Мартин
источник