Come aggiungere più elementi in una riga in Python


91

Io ho:

count = 0
i = 0
while count < len(mylist):
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]:
        print mylist[i + 1], mylist[i + 2]
    newlist.append(mylist[i + 1])
    newlist.append(mylist[i + 2])
    newlist.append(mylist[i + 7])
    newlist.append(mylist[i + 8])
    newlist.append(mylist[i + 9])
    newlist.append(mylist[i + 10])
    newlist.append(mylist[i + 13])
    newlist.append(mylist[i + 14])
    newlist.append(mylist[i + 19])
    newlist.append(mylist[i + 20])
    newlist.append(mylist[i + 21])
    newlist.append(mylist[i + 22])
    count = count + 1
    i = i + 12

Volevo trasformare le newlist.append()dichiarazioni in poche dichiarazioni.


Ovviamente non è la stessa cosa se ottieni risultati diversi.
JJJ

Questa è una sintassi non valida.
TerryA

4
Supponendo che i tuoi oggetti debbano essere elenchi, il tuo codice non è Python valido come stai usando al []posto di (). Si prega di pubblicare codice reale funzionante.
BrenBarn

Risposte:


225

No. Il metodo per aggiungere un'intera sequenza è list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]

"insert" funziona come "append" ma si aggiunge all'inizio dell'elenco. Esiste una funzione per aggiungere più valori all'inizio di un elenco?
passero

@sparrow: No. Slice-assign invece.
Ignacio Vazquez-Abrams

hai bisogno che il secondo input sia un elenco o può essere solo ogni elemento separato da virgole?
Charlie Parker

@CharlieParker: l'argomento list.extend()deve essere un iterabile.
Ignacio Vazquez-Abrams

5

No.

Prima di tutto, appendè una funzione, quindi non puoi scrivere append[i+1:i+4]perché stai cercando di ottenere una parte di una cosa che non è una sequenza. (Non è possibile ottenere un elemento di esso, sia: append[i+1]è sbagliato per la stessa ragione.) Quando si chiama una funzione, l'argomento va in parentesi , vale a dire quelli rotondi: ().

Secondo, quello che stai cercando di fare è "prendere una sequenza e mettere ogni elemento in essa alla fine di quest'altra sequenza, nell'ordine originale". È scritto extend. appendè "prendi questa cosa e mettila alla fine della lista, come un singolo elemento , anche se è anche una lista ". (Ricorda che una lista è una specie di sequenza.)

Ma poi, devi essere consapevole che i+1:i+4è un costrutto speciale che appare solo tra parentesi quadre (per ottenere una sezione da una sequenza) e parentesi graffe (per creare un dictoggetto). Non puoi passarlo a una funzione. Quindi non puoi farlo extend. È necessario creare una sequenza di questi valori e il modo naturale per farlo è con la rangefunzione.



2

Usa questo :

#Inputs
L1 = [1, 2]
L2 = [3,4,5]

#Code
L1+L2

#Output
[1, 2, 3, 4, 5]

Utilizzando l'operatore (+) è possibile saltare gli operatori di aggiunta ed estensione multipli in una sola riga di codice e questo è valido per più di due elenchi di L1 + L2 + L3 + L4 ....... ecc.

Buon apprendimento ... :)


1
mylist = [1,2,3]

def multiple_appends(listname, *element):
    listname.extend(element)

multiple_appends(mylist, 4, 5, "string", False)
print(mylist)

PRODUZIONE:

[1, 2, 3, 4, 5, 'string', False]
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.