Вставлення рядка в список, не розбиваючись на символи


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


Вставлення цього фрагмента швидше, ніж список Raffe Kettler's list.insert (). Див. Додавання стовпця до двовимірного масиву . Не те, що зазвичай має значення.
ChaimG

15

Інший варіант - використання перевантаженого + operator:

>>> l = ['hello','world']
>>> l = ['foo'] + l
>>> l
['foo', 'hello', 'world']

1
Щойно побачив, ви також можете використовувати його для додавання в кінці: l += ['foo']
Toni Homedes i Saun

6

найкраще поставити дужки навколо футу і використовувати + =

list+=['foo']


4

Не використовуйте список як ім'я змінної. Це вбудоване в те, що ви маскуєте.

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

l = ['hello','world']
l.insert(0, 'foo')
print l
['foo', 'hello', 'world']

Це не зовсім правильно. insert()бере другий аргумент.
Рейф Кеттлер

@RafeKettler Whoops, додаток - це аргумент без місця.
Спенсер Ратбун


0
ls=['hello','world']
ls.append('python')
['hello', 'world', 'python']

або (використовувати insertфункцію, де ви можете використовувати позицію індексу в списку)

ls.insert(0,'python')
print(ls)
['python', 'hello', 'world']

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.