Seznam je důležitý kontejner v Pythonu, protože uchovává prvky všech datových typů jako kolekci. Znalost některých operací se seznamy je pro každodenní programování nezbytná. Tento článek pojednává o jedné ze základních operací se seznamem o způsobech kontroly existence prvku v seznamu.
Způsob 1 : Naivní způsob
V Naivním způsobu se jednoduše použije smyčka, která iteruje přes všechny prvky a kontroluje existenci cílového prvku. Jedná se o nejjednodušší způsob kontroly existence prvku v seznamu.
Metoda 2 : Použití in
Python in je nejběžnější způsob kontroly, zda prvek v seznamu existuje, nebo ne. Tento konkrétní způsob vrací True, pokud prvek v seznamu existuje, a False, pokud prvek v seznamu neexistuje. Seznam nemusí být setříděný, aby bylo možné tento přístup kontroly praktikovat.
Kód č. 1 : Demonstrace kontroly existence prvku v seznamu pomocí naivní metody a in
.
test_list = print("Checking if 4 exists in list ( using loop ) : ") for i in test_list: if(i == 4) : print ("Element Exists") print("Checking if 4 exists in list ( using in ) : ") if (4 in test_list): print ("Element Exists") Výstup :
Checking if 4 exists in list ( using loop ) : Element ExistsChecking if 4 exists in list ( using in ) : Element Exists
Metoda 3 : Použití set() + in
Převedení seznamu na množinu a následné použití in může být možná efektivnější než pouze použití in. Mít efektivitu za plus má však i určitá negativa. Jedním z nich je, že pořadí seznamu není zachováno, a pokud byste se rozhodli pro pořízení nového seznamu, museli byste použít další místo. Další nevýhodou je, že množina neumožňuje duplicitu, a proto by se duplicitní prvky z původního seznamu odstranily.
Metoda 4 : Použití sort() + bisect_left()
Konvenční způsob binárního vyhledávání testuje existenci prvků, proto musí být seznam nejprve seřazen, a tudíž není zachováno pořadí prvků. bisect_left() vrací první výskyt hledaného prvku a pracuje podobně jako lower_bound() v C++ STL.
Kód č. 2 : Demonstrace ověření existence prvku v seznamu pomocí set() + in a sort() + bisect_left().
from bisect import bisect_left test_list_set = test_list_bisect = print("Checking if 4 exists in list ( using set() + in) : ") test_list_set = set(test_list_set) if 4 in test_list_set : print ("Element Exists") print("Checking if 4 exists in list ( using sort() + bisect_left() ) : ") test_list_bisect.sort() if bisect_left(test_list_bisect, 4): print ("Element Exists")