Jak Spojit Dva Seznamy v Pythonu
Úvod
Seznam zřetězení zákon o vytvoření jednotného seznamu z více menších seznamy daisy řetězení dohromady.
existuje mnoho způsobů, jak zřetězit seznamy v Pythonu. Konkrétně v tomto článku se budeme jít nad tím, jak spojit dva seznamy v Pythonu používat operátor plus, rozbalit operátor násobení operátor, manuální pro smyčce zřetězení, itertools.chain()
funkce a vestavěný seznam metodu extend()
.
Ve všech fragmentů kódu níže, budeme využívat následující seznamy:
list_a = list_b =
Plus Seznam operátorů Zřetězení
nejjednodušší a nejvíce jednoduchý způsob, jak spojit dva seznamy v Pythonu je plus (+
) operátor:
list_c = list_a + list_bprint (list_c)
Rozbalit Seznam operátorů Zřetězení
Tato metoda vám umožní připojit více seznamů. Jedná se o poměrně novou funkci a je k dispozici pouze od Pythonu 3.6+. Operátor rozbalení, jak název napovídá, rozbalí objekt iterable
do svých prvků. Rozbalení je užitečné, když chceme vygenerovat nepřeberné množství argumentů z jediného seznamu. Například:
def foo(a, b, c, d): return a + b + c + d# We want to use the arguments of the following list with the foo function.# However, foo doesn't take a list, it takes 4 numbers, which is why we need to# unpack the list.foo(*list_a)# This is the same as if we were to call foo(1,2,3,4)
10
stručně řečeno, jsme použít konstruktor seznamu () a generování prvků nový seznam v pořadí podle vybalování více seznamů jeden po druhém:
list_c = # This is the same as:# list_c = print (list_c)
Násobit Operátor Zřetězení Seznamu
množit (*
) provozovatel je speciální případ seznamu, zřetězení v Pythonu. Používá se opakovat celý seznam vícekrát (což je důvod, proč je označován s a operátor násobení):
print(list_a * 2)
pro smyčku Seznamu, Zřetězení
V této metodě budeme jít přes jeden seznam, zatímco připojí každý z jeho prvků do jiného seznamu jeden po druhém. Když smyčka je u konce, budete mít jeden seznam s všechny požadované prvky:
for i in list_b: list_a.append(i)print (list_a)
itertools.řetěz () zřetězení seznamu
tato metoda pracuje s iterables
. To vytváří a vrací iterátor, který může být později použita pro konstrukci zřetězené seznam (představte si to jako šipku, která se právě zapamatuje pořadí prvků ve výsledném seznamu):
# If we were to call itertools.chain() like soiterator = itertools.chain(, )# Basically the iterator is an arrow which can give us the next() element in a sequence, so if we call a list() constructor with said iterable, it works like this:list(iterator)
Pod kapotou, něco podél těchto linek je, co se stane:
# Iterator: The next element in this list is 1 , ^# Iterator: The next element in this list is 2, ^# Iterator: The next element in this list is 3 , ^# Iterator: The next element in this list is 4 , ^# So the list() call looks something like:list()# Keep in mind this is all pseudocode, Python doesn't give the developer direct control over the iterator
Pro tuto metodu, budete muset importovat itertools
:
import itertoolslist_c = list(itertools.chain(list_a, list_b))print (list_c)
rozšířit() Seznam Zřetězení
Toto je aa postaven-je funkce, která může být použita k rozšíření seznamu. Zde rozšiřujeme první seznam přidáním prvků druhého seznamu:
list_a.extend(list_b)print (list_a)