Inserimento di una stringa in un elenco senza essere diviso in caratteri


113

Sono nuovo in Python e non riesco a trovare un modo per inserire una stringa in un elenco senza che venga suddivisa in singoli caratteri:

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

Cosa devo fare per avere:

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

Ho cercato la documentazione e il Web, ma non è stata la mia giornata.

Risposte:


147

Da aggiungere alla fine dell'elenco:

list.append('foo')

Da inserire all'inizio:

list.insert(0, 'foo')

Sono sicuro che la maggior parte delle persone lo sa, ma solo per aggiungere: fare list2 = list1.append('foo')o list2 = list1.insert(0, 'foo') risulterà list2nell'avere un valore di Nessuno. Entrambi appende insertsono metodi che modificano l'elenco in cui vengono utilizzati anziché restituirne uno nuovo.
MoltenMuffins


15

Un'altra opzione sta usando il sovraccarico + operator:

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

1
Appena visto puoi anche usarlo per aggiungere alla fine: l += ['foo']
Toni Homedes i Saun

6

meglio mettere parentesi intorno a pippo e usare + =

list+=['foo']

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

4

Non utilizzare l'elenco come nome di variabile. È un built-in che stai mascherando.

Per inserire, utilizzare la funzione di inserimento degli elenchi.

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

Questo non è del tutto corretto. insert()accetta un secondo argomento.
Rafe Kettler

@RafeKettler Whoops, append è quello senza un argomento di luogo.
Spencer Rathbun


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

o (usa la insertfunzione in cui puoi usare la posizione dell'indice nell'elenco)

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.