Mai mult
Cum pot obține de concatenare a două liste în Python fără a modifica nici unul?
În Python, singurul mod în care pot găsi pentru a concatena două liste este lista.extinde`, care modifică prima listă. Este acolo orice concatenare funcție care returnează rezultatul său fără a modifica argumentele sale?
633
7
Da:
list1+lista2
. Acest lucru vă oferă o listă nouă care este concatenarealist1 " și " list2
.În funcție de modul're de gând să-l folosească după ce se's-a creat
itertools.lanț
ar putea fi cel mai bun pariu:Acest lucru creează un generator pentru elementele din listă combinată, care are avantajul că nu nouă listă trebuie să fie create, dar puteți folosi în continuare " c " ca și cum ar fi concatenarea a două liste:
Dacă listele sunt mari și eficiență este un motiv de îngrijorare, atunci acest lucru și alte metode de itertools` module sunt foarte la îndemână să știi.
Rețineți că acest exemplu foloseste-te de elementele din "c", deci'd trebuie să reinițializează înainte de a putea refolosi. Desigur, puteți folosi doar lista(c)` pentru a crea lista completă, dar că va crea o nouă listă în memorie.
concatenated_list = list_1 + list_2
Puteți folosi, de asemenea, "sumă", dacă vă dau un "start" argument:
Aceasta funcționează, în general, pentru orice a
+
operator:Cu excepția notabilă a siruri de caractere:
ai putea întotdeauna de a crea o nouă listă care este un rezultat al adăugarea a două liste.
Listele sunt mutabile secvențe deci cred că are sens de a modifica listele inițiale de a extinde sau append.
Și dacă aveți mai mult de două liste pentru a înlănțui:
Nu't salva de fapt orice moment (intermediar liste sunt încă create) dar frumos, dacă aveți un număr variabil de liste pentru a aplatiza, de exemplu,
*args
.Doar să știi:
Atunci când scrie
list1 + lista2
, sunt de asteptare__add__ metoda de list1
, care returnează o listă nouă. în acest fel, puteți, de asemenea, face cumyobject + list1
prin adăugarea__add__
metoda la clasă personal.