Inserindo uma string em uma lista sem se dividir em caracteres


113

Sou novo no Python e não consigo encontrar uma maneira de inserir uma string em uma lista sem que ela seja dividida em caracteres individuais:

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

O que devo fazer para ter:

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

Pesquisei nos documentos e na web, mas não foi o meu dia.

Respostas:


147

Para adicionar ao final da lista:

list.append('foo')

Para inserir no início:

list.insert(0, 'foo')

Tenho certeza que a maioria das pessoas sabe disso, mas apenas para acrescentar: fazer list2 = list1.append('foo')ou list2 = list1.insert(0, 'foo') resultará em list2ter o valor Nenhum. Ambos appende insertsão métodos que alteram a lista na qual são usados, em vez de retornar uma nova lista.
MoltenMuffins


15

Outra opção é usar o sobrecarregado + operator:

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

1
Acabei de ver que você também pode usá-lo para adicionar no final: l += ['foo']
Toni Homedes i Saun

6

melhor colocar colchetes em torno de foo e usar + =

list+=['foo']

5
>>> li = ['aaa', 'bbb']
>>> li.insert(0, 'wow!')
>>> li
['wow!', 'aaa', 'bbb']

4

Não use lista como nome de variável. É algo que você está mascarando.

Para inserir, use a função de inserção de listas.

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

Isso não está totalmente correto. insert()leva um segundo argumento.
Rafe Kettler

@RafeKettler Opa, append é aquele sem um argumento de lugar.
Spencer Rathbun


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

ou (use a insertfunção onde você pode usar a posição do índice na lista)

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.