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"
)