Seznam je důležitým kontejnerem v Pythonu, protože ukládá prvky všech datových typů jako kolekci. Znalost určitých operací se seznamem je nezbytná pro denní programování. Tento článek popisuje nejrychlejší způsob, jak zkontrolovat, zda hodnota v seznamu existuje nebo se nepoužívá Krajta .
Příklad
Input: test_list = [1, 6, 3, 5, 3, 4] 3 # Check if 3 exist or not. Output: True Explanation: The output is True because the element we are looking is exist in the list.>
Zkontrolujte, zda prvek existuje v seznamu v Pythonu
- Použitím v Prohlášení
- Používat smyčka
- Použitím funkce any().
- Použitím počet() funkce
- Použitím seřadit s bisect_left a soubor()
- Použitím nalézt() metoda
- Použitím Čelit() funkce
- Použitím zkuste-kromě bloku
Zkontrolujte, zda prvek v seznamu existuje pomocí v prohlášení
V této metodě lze snadno použít smyčku, která iteruje všechny prvky ke kontrole existence cílového prvku. Toto je nejjednodušší způsob, jak zkontrolovat existenci prvku v seznamu. Python je nejběžnější způsob, jak zkontrolovat, 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. Aby bylo možné tento přístup kontroly praktikovat, není nutné seznam třídit.
Python3 lst=[ 1, 6, 3, 5, 3, 4 ] #checking if element 7 is present # in the given list or not i=7 # if element present then return # exist otherwise not exist if i in lst: print('exist') else: print('not exist')> Výstup
not exist>
Časová náročnost: O(1)
Pomocný prostor: O(n), kde n je celkový počet prvků.
Pomocí smyčky zjistěte, zda prvek v seznamu existuje
Daný kód Pythonu inicializuje seznam s názvemtest_list>s některými celočíselnými prvky. Poté iteruje každý prvek v seznamu pomocí afor>smyčka. Uvnitř smyčka , zkontroluje, zda aktuální prveki>se rovná hodnotě 4 pomocí anif>prohlášení. Pokud je podmínka pravdivá, vypíše prvek existuje na konzole. Kód vypíše zprávu, pokud je v seznamu přítomno číslo 4, a v tomto případě bude vytištěn Element Exist, protože číslo 4 v seznamu existuje.[1, 6, 3, 5, 3, 4]>.
Python3
# Initializing list test_list = [1, 6, 3, 5, 3, 4] # Checking if 4 exists in list for i in test_list: if(i == 4): print('Element Exists')> Výstup:
Element Exists>
Časová náročnost: Na)
Pomocný prostor: O(1)
Pomocí funkce any() zkontrolujte, zda prvek v seznamu existuje
Dosahuje toho pomocí any()>funkce s generátorovým výrazem. Výraz generátoru prochází každým prvkemtest_list>a zkontroluje, zda se v seznamu vyskytuje více než jednou. Výsledek této kontroly se uloží do proměnnéresult>. Nakonec kód vytiskne zprávu indikující, zda existují nějaké duplicitní prvky, zobrazující Má řetězec obsahuje jakýkoli prvek seznamu: True, pokud existují duplikáty, a Má řetězec obsahuje jakýkoli prvek seznamu: False, pokud neexistují žádné duplikáty.
Python3
# Initializing list test_list = [1, 6, 3, 5, 3, 4] result = any(item in test_list for item in test_list) print('Does string contain any list element : ' +str(bool(result)))> Výstup:
Does string contain any list element : True>
Pomocí funkce count() zjistěte, zda prvek v seznamu existuje
Můžeme použít vestavěné Seznam Pythonu metoda count(), která zkontroluje, zda předaný prvek v seznamu existuje. Pokud předaný prvek v seznamu existuje, počet() metoda zobrazí, kolikrát se vyskytuje v celém seznamu. Pokud se jedná o nenulové kladné číslo, znamená to, že prvek v seznamu existuje. Ukázka kontroly existence prvků v seznamu pomocí počet() .
Python3 # Initializing list test_list = [10, 15, 20, 7, 46, 2808] print('Checking if 15 exists in list') # number of times element exists in list exist_count = test_list.count(15) # checking if it is more than 0 if exist_count>0: print('Ano, 15 existuje v seznamu') else: print('Ne, 15 neexistuje v seznamu')> Výstup:
Checking if 15 exists in list Yes, 15 exists in list>
Zkontrolujte, zda prvek v seznamu existuje, pomocí řazení pomocí bisect_left a set
Převedení seznamu na sadu a následné použití to může být efektivnější, než jej pouze používat. Ale mít efektivitu jako plus má i určitá negativa. Jedním z nich je, že pořadí seznamu není zachováno, a pokud se rozhodnete pro nový seznam, budete potřebovat místo navíc. Další nevýhodou je, že sada neumožňuje duplicitu a duplicitní prvky by tedy byly odstraněny z původního seznamu. Při konvenčním binárním způsobu hledání existence prvku musí být seznam setříděn jako první, a proto nezachovává pořadí prvků. bisect_left() vrací první výskyt prvku, který má být nalezen, a funguje podobně jako dolní_mez() v C++ STL.
Poznámka: Funkce půlení uvede pouze pozici, kam se má prvek vložit, ale ne podrobnosti o tom, zda je prvek přítomen nebo ne.
Ukázka kontroly existence prvku v seznamu pomocí soubor() + v a seřadit () + bisect_left()
Python3 from bisect import bisect_left ,bisect # Initializing list test_list_set = [ 1, 6, 3, 5, 3, 4 ] test_list_bisect = [ 1, 6, 3, 5, 3, 4 ] print('Checking if 4 exists in list ( using set() + in) : ') # 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() ) : ') # Checking if 4 exists in list # using sort() + bisect_left() test_list_bisect.sort() if bisect_left(test_list_bisect, 4)!=bisect(test_list_bisect, 4): print ('Element Exists') else: print('Element doesnt exist')> Výstup:
Checking if 4 exists in list ( using set() + in) : Element Exists Checking if 4 exists in list ( using sort() + bisect_left() ) : Element Exists>
Pomocí metody find() zkontrolujte, zda prvek v seznamu existuje
Dané Krajta kód zkontroluje, zda v seznamu existuje číslo 15test_list>. Převádí prvky seznamu na řetězce a spojuje je pomlčkami. Poté používá find()>metoda zkontrolovat, zda ve výsledném řetězci existuje podřetězec 15. Pokud je nalezeno 15, vytiskne Ano, v seznamu existuje 15; jinak se vytiskne Ne, 15 v seznamu neexistuje.
# Initializing list test_list = [10, 15, 20, 7, 46, 2808] print('Checking if 15 exists in list') x=list(map(str,test_list)) y='-'.join(x) if y.find('15') !=-1: print('Yes, 15 exists in list') else: print('No, 15 does not exists in list')> Výstup
Checking if 15 exists in list Yes, 15 exists in list>
Pomocí funkce Counter() zkontrolujte, zda prvek v seznamu existuje
Poskytnutý kód Pythonu používá Counter> třídy zcollections>modul pro výpočet frekvence každého prvku vtest_list>. Poté zkontroluje, zda je frekvence čísla 15 větší než 0. Pokud je frekvence nenulová, znamená to, že v seznamu existuje 15 a kód vypíše Ano, 15 v seznamu existuje. V opačném případě vypíše Ne, 15 v seznamu neexistuje. TheCounter>class efektivně počítá výskyty prvků, což umožňuje přímou kontrolu existence.
from collections import Counter test_list = [10, 15, 20, 7, 46, 2808] # Calculating frequencies frequency = Counter(test_list) # If the element has frequency greater than 0 # then it exists else it doesn't exist if(frequency[15]>0): print('Ano, 15 existuje v seznamu') else: print('Ne, 15 neexistuje v seznamu')> Výstup
Yes, 15 exists in list>
Zjistěte, zda an prvek existuje v seznamu pomocí bloku try-except
Jedním z dalších způsobů, jak zkontrolovat, zda prvek v seznamu existuje, je použití index() metoda. Tato metoda vrátí index prvního výskytu prvku v seznamu nebo vyvolá chybu ValueError, pokud prvek v seznamu není. Chcete-li použít tuto metodu, můžete zabalit volání index() do bloku try-except, aby se zachytila hodnota ValueError a vrátila se False, pokud nastane:
Python3 def element_exists(lst, element): # Try to get the index of the element in the list try: lst.index(element) # If the element is found, return True return True # If a ValueError is raised, the element is not in the list except ValueError: # Return False in this case return False #Test the function test_list = [1, 6, 3, 5, 3, 4] print(element_exists(test_list, 3)) # prints True print(element_exists(test_list, 7)) # prints False #This code is contributed by Edula Vinay Kumar Reddy>
Výstup
True False>
Časová složitost: O(n), kde n je délka seznamu. Metoda index() iteruje seznamem, aby našla prvek, takže časová složitost je lineární.
Prostorová složitost : O(1). Tento přístup nevyžaduje žádný další prostor.
Pomocí funkce filter() zjistěte, zda prvek v seznamu existuje
Přístup krok za krokem
- Definujte seznam my_list a Set element_to_check.
- Pomocí funkce filter() vytvořte iterátor (filtered_elements), který obsahuje prvky rovné prvku_to_check.
- Převeďte iterátor filter_elements na seznam.
- Tento krok je nezbytný, protože funkce filter() vrací iterátor. Seznam nyní obsahuje prvky rovné element_to_check.
- Zkontrolujte, zda seznam filter_list není prázdný.
- Pokud seznam není prázdný, znamená to, že prvek existuje v původním seznamu.
my_list = [1, 2, 3, 4, 5] element_to_check = 3 # Use filter to create an iterator of elements equal to the target element filtered_elements = filter(lambda x: x == element_to_check, my_list) # Convert the iterator to a list and check if it's not empty if list(filtered_elements): print('Element exists in the list') else: print('Element does not exist in the list')> Výstup
Element exists in the list>
Časová složitost: O(n)
Složitost pomocného prostoru: O(n)