2012-01-09 23 views

risposta

34

Applicare affettamento:

a[0:0] = k 

O farlo manualmente:

a = k + a 

Il primo approccio rimangono gli stessi per l'inserimento in qualsiasi luogo, cioè a[n:n] = k sarebbe inserire k alla posizione n, ma la secondo approccio non sarebbe lo stesso, che sarà

a = a[:n] + k + a[n:] 
+1

Wow! Fammi provare a farlo. – canadadry

+1

Ho scelto la soluzione per affettare. Grazie. – canadadry

2
>>> k + a 
['nice', '-n', '10', 'foo.py'] 
4

Usa lista concatenazione:

a = k + a 
10

invece di:

>>> a.insert(0, k) 

uso:

>>> k.extend(a) 
>>> k 
['nice', '-n', '10', 'foo.py'] 

questo aggiorna la "k" lista "in luogo" invece di creare una copia .

la concatenazione di lista (k + a) creerà una copia.

l'opzione slicing (a [0: 0] = k) aggiornerà anche "sul posto" ma IMHO è più difficile da leggere.

+0

Questo dovrebbe aggiungere un alla fine di k. un rimarrebbe lo stesso di prima. – 0605002

+1

@FlopCoder: è ovvio che può fare a = k, il punto importante è sapere sul posto e copiare la concatenazione. –

+0

Preferisco mutare 'a' in posizione. – canadadry

0
>>> a = ['foo.py'] 
>>> k = ['nice', '-n', '10'] 
>>> k.extend(a) 
>>> print k 
['nice', '-n', '10', 'foo.py'] 
0
list1=list(xrange(1,11)) # numbers 1 to 10 in list 
    list1[:0]=[0,0,0] # adds triple 0s to front of list 
    list1+=[11,12,13] #adds [11,12,13] to the end of list 
    print list1 
Problemi correlati