2013-05-18 9 views
61

ho:Come per aggiungere più elementi in una sola riga in Python

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 

ho voluto fare le dichiarazioni in newlist.append() alcune affermazioni.

+0

Beh, ovviamente, non è lo stesso se si ottengono risultati diversi. – JJJ

+0

Questa è una sintassi non valida. – TerryA

+4

Supponendo che gli oggetti siano intesi come liste, il tuo codice non è Python valido dato che stai usando '[]' invece di '()'. Si prega di inviare codice di lavoro reale. – BrenBarn

risposta

151

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

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

'inserisci' funziona come 'aggiungi' ma aggiunge all'inizio della lista. Esiste una funzione per aggiungere più valori all'inizio di una lista? – sparrow

+0

@sparrow: No. Slice-assegna invece. –

4

No.

Prima di tutto, append è una funzione, quindi non è possibile scrivere append[i+1:i+4] perché si sta cercando di ottenere una fetta di una cosa che non è una sequenza. (Non è possibile ottenere un elemento in questo modo: append[i+1] è errato per lo stesso motivo.) Quando si chiama una funzione, l'argomento diventa parentesi tra parentesi, ad esempio le arrotondate: ().

In secondo luogo, ciò che si sta tentando di fare è "prendere una sequenza e inserire tutti gli elementi in essa alla fine di questa altra sequenza, nell'ordine originale". Questo è scritto extend. append è "prendi questa cosa e mettila alla fine della lista, come articolo singolo, anche se è anche una lista". (Ricorda che un elenco è un tipo di sequenza.)

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

1

Si potrebbe anche:

newlist += mylist[i:i+22] 
Problemi correlati