Průsečík
Před zahájením tohoto kurzu bude vysvětlen koncept průniku. Níže jsou uvedeny dva jako příklad:
Seznam1 = [4, 7, 23, 9, 6, 11]Seznam2 = [6, 5, 1, 20, 9, 7, 4, 3]
Po použití křižovatky, pokud je výsledek uložen v jiném seznamu, snad s názvem List3, bude obsahovat následující data.
List3 = [4, 6, 7, 9]Grafické znázornění List3 je uvedeno níže:
Příklad 1: Protínající se seznamy metodou set ()
Následující příklad ukazuje, jak můžete protínat dva seznamy pomocí soubor() metoda a & operátor. Zde jsou deklarovány dva seznamy, pojmenované list1 a list2. Oba tyto seznamy obsahují číselné hodnoty. Třetí seznam je generován převedením seznamu 1 a seznamu 2 do sady prostřednictvím sady() metoda a aplikace křižovatky pomocí & operátor. Dále se vytisknou hodnoty tří seznamů.
#!/ usr / bin / env python3# Definujte seznam 1
seznam1 = [22, 8, 45, 11, 34, 9, 20, 7]
# Definujte seznam2
list2 = [12, 9, 20, 78, 53, 8, 2, 30,31]
# Vytvořte list3 protínáním list1 a list2
list3 = list (set (list1) & set (list2))
# Tisk seznamu 1
print ("Hodnoty seznamu1: \ n", seznam1)
# Vytisknout seznam2
print ("Hodnoty seznamu2: \ n", seznam2)
# Vytisknout seznam3
print ("Hodnoty list3 po protnutí list1 a list2: \ n", list3)
Výstup
Po spuštění skriptu se zobrazí následující výstup. Pro oba seznamy jsou společné tři hodnoty. Tyto hodnoty jsou 8, 9 a 20 a jsou uvedeny v obsahu třetího seznamu.
Příklad 2: Průnik seznamů metodou intersection ()
Pro objekt seznamu neexistuje žádná přímá integrovaná metoda pro zjištění hodnot průniku mezi dvěma seznamy. Sada má však vestavěnou metodu s názvem průsečík(), zjistit společné hodnoty mezi sadami. Vlastní funkce s názvem intersectionLists (), je definován v následujícím skriptu pro zjištění společných hodnot mezi těmito dvěma seznamy. Jedním omezením této sady je, že může obsahovat pouze číselná data. Proměnná seznamu může obsahovat různé typy datových řetězců, včetně číselných, booleovských atd. Ve scénáři, seznam1 a seznam2 obsahovat všechna data řetězce včetně a textu. Skript vytiskne všechny běžné řetězce a číselné hodnoty mezi nimi seznam1 a seznam2.
#!/ usr / bin / env python3# Definujte funkci, která vrátí průnik dvou seznamů
def intersectLists (list1, list2):
návratová sada (seznam1).křižovatka (list2)
# Definujte seznam 1
list1 = ['Hello', '7', '8', '10', '2']
# Definujte seznam2
list2 = ['8', '34', 'Hello', '2', '21', '1', 10]
"Zavolejte vlastní funkci pro uložení
výsledek průsečíku list1 a list2
do list3 "
list3 = intersectLists (seznam1, seznam2)
# Tisk seznamu 1
print ("Hodnoty seznamu1: \ n", seznam1)
# Vytisknout seznam2
print ("Hodnoty seznamu2: \ n", seznam2)
# Vytisknout seznam3
print ("Hodnoty list3 po protnutí list1 a list2: \ n", list3)
Výstup
Po spuštění skriptu se zobrazí následující výstup. Zde jsou běžné hodnoty mezi dvěma seznamy '2', '8' a 'Hello.''
Příklad 3: Protínající se seznamy metodou smyčky
Předchozí dva příklady ukazují průnik seznamu pomocí vestavěných funkcí. Následující příklad ukazuje průnik seznamu bez jakékoli vestavěné funkce. Toho lze dosáhnout pomocí smyčky. Ve skriptu jsou deklarovány dva seznamy textových dat. The pro smyčka se zde používá k vyhledání běžných textových hodnot mezi seznam1 a seznam2, a které jsou uloženy v proměnné, seznam3. Dále se vytisknou hodnoty těchto tří proměnných seznamu.
#!/ usr / bin / env python3# Definujte seznam 1
list1 = ['Farhan', 'Abir', 'Akash', 'Meena', 'Mazher']
# Definujte seznam2
list2 = ['Meena', 'Moyna', 'Nobel', 'Naher', 'Abir', 'Farheen']
# Najděte průnik pomocí smyčky for a výsledek uložte do seznamu3
list3 = [hodnota pro hodnotu v seznamu1, pokud je hodnota v seznamu2]
# Tisk seznamu 1
print ("Hodnoty seznamu1: \ n", seznam1)
# Vytisknout seznam2
print ("Hodnoty seznamu2: \ n", seznam2)
# Vytisknout seznam3
print ("Hodnoty list3 po protnutí list1 a list2: \ n", list3)
Výstup
Po spuštění skriptu se zobrazí následující výstup. Zde jsou společné textové hodnoty obou seznamů 'Abir' a „Meeno.''
Příklad 4: Protínající jednoduché a vnořené seznamy pomocí metody filter ()
Následující příklad ukazuje průnik mezi jednoduchým seznamem a vnořeným seznamem. The filtr() metoda a lambda funkce se ve skriptu používají k provedení průniku mezi list1 a list2. Pokud seznam obsahuje jeden nebo více seznamů jako položky seznamu, pak se tento seznam nazývá vnořený seznam. Tady, seznam1 je jednoduchý seznam a seznam2 je vnořený seznam, zatímco seznam3 obsahuje hodnoty průniku z seznam1 a seznam2.
#!/ usr / bin / env python3# Definujte jednoduchý seznam
seznam1 = [22, 8, 45, 11, 34, 9, 20, 7]
# Definujte vnořený seznam
list2 = [[12, 9, 20], [78, 11, 53, 8], [2, 30, 31, 45]]
# Vytvořte list3 protínáním list1 a list2 pomocí filter ()
list3 = [list (filtr (lambda n: n v list1, slist)) pro slist v list2]
# Tisk seznamu 1
print ("Hodnoty seznamu1: \ n", seznam1)
# Vytisknout seznam2
print ("Hodnoty seznamu2: \ n", seznam2)
# Vytisknout seznam3
print ("Hodnoty list3 po protnutí list1 a list2: \ n", list3)
Výstup
Po spuštění skriptu se zobrazí následující výstup. Proměnná list2 obsahuje tři další seznamy jako položky seznamu. Výsledek tedy ukazuje průnik mezi těmito třemi dílčími seznamy seznamu2 se seznamem1.
Závěr
Průsečík seznamu je užitečný způsob, jak najít běžné hodnoty mezi seznamy, které obsahují velké množství položek seznamu. V tomto výukovém programu jsou uvedeny metody pro provádění průsečíků seznamů s integrovanými funkcemi a bez nich. Po přečtení tohoto článku by měl být koncept křižovatky seznamů jasný a měli byste být schopni použít křižovatku seznamů ve vašem skriptu tak, že budete postupovat jakýmkoli způsobem uvedeným v tomto kurzu.