Zoznam je dôležitým kontajnerom v Pythone, pretože ukladá prvky všetkých typov údajov ako kolekciu. Znalosť určitých operácií so zoznamom je potrebná pre denné programovanie. Tento článok popisuje najrýchlejší spôsob, ako skontrolovať, či hodnota v zozname existuje alebo sa nepoužíva Python .
Prí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.>
Skontrolujte, či prvok existuje v zozname v Pythone
- Použitím v Vyhlásenie
- Pomocou a slučka
- Použitím funkciou ľubovoľná().
- Použitím počítať () funkciu
- Použitím triediť s bisect_left a set()
- Použitím Nájsť() metóda
- Použitím Counter() funkciu
- Použitím try-okrem bloku
Skontrolujte, či prvok v zozname existuje pomocou v vyhlásenie
V tejto metóde sa dá ľahko použiť slučka, ktorá iteruje cez všetky prvky na kontrolu existencie cieľového prvku. Toto je najjednoduchší spôsob, ako skontrolovať existenciu prvku v zozname. Python je najbežnejší spôsob, ako skontrolovať, či prvok v zozname existuje alebo nie. Tento konkrétny spôsob vráti hodnotu True, ak prvok v zozname existuje, a hodnotu False, ak prvok v zozname neexistuje. Na precvičenie tohto prístupu kontroly nie je potrebné triediť zoznam.
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ýkon
not exist>
Časová zložitosť: O(1)
Pomocný priestor: O(n), kde n je celkový počet prvkov.
Zistite, či prvok v zozname existuje pomocou slučky
Daný kód Pythonu inicializuje zoznam s názvomtest_list>s niektorými celočíselnými prvkami. Potom iteruje cez každý prvok v zozname pomocou afor>slučka. Vnútri slučka , skontroluje, či je aktuálny prvoki>sa rovná hodnote 4 pomocou anif>vyhlásenie. Ak je podmienka pravdivá, vypíše prvok existuje na konzole. Kód vypíše správu, ak sa v zozname nachádza číslo 4 a v tomto prípade sa vytlačí Element Exists, pretože v zozname existuje číslo 4[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ýkon:
Element Exists>
Časová zložitosť: O(n)
Pomocný priestor: O(1)
c programy
Pomocou funkcie any() skontrolujte, či prvok v zozname existuje
Dosahuje to využitím any()>funkciu s generátorovým výrazom. Generátorový výraz iteruje cez každý prvoktest_list>a skontroluje, či sa v zozname vyskytuje viackrát. Výsledok tejto kontroly sa uloží do premennejresult>. Nakoniec kód vypíše správu označujúcu, či existujú nejaké duplicitné prvky, pričom sa zobrazí text Má reťazec obsahuje akýkoľvek prvok zoznamu: True, ak existujú duplikáty, a Obsahuje nejaký prvok zoznamu: False, ak neexistujú žiadne 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ýkon:
Does string contain any list element : True>
Zistite, či prvok v zozname existuje, pomocou funkcie count().
Môžeme použiť vstavané Zoznam Python metóda count(), aby ste skontrolovali, či odovzdaný prvok existuje v zozname. Ak odovzdaný prvok v zozname existuje, počítať () metóda zobrazí, koľkokrát sa vyskytuje v celom zozname. Ak je to nenulové kladné číslo, znamená to, že prvok v zozname existuje. Ukážka kontroly existencie prvkov v zozname pomocou počítať () .
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('Áno, 15 existuje v zozname') else: print('Nie, 15 neexistuje v zozname')> Výkon:
Checking if 15 exists in list Yes, 15 exists in list>
Skontrolujte, či prvok v zozname existuje, pomocou triedenia s bisect_left a set
Konverzia zoznamu na sadu a následné použitie to môže byť efektívnejšie ako len jeho používanie. Ale mať efektivitu ako plus má aj isté negatíva. Jedným z nich je, že poradie zoznamu nie je zachované, a ak sa rozhodnete pre nový zoznam, budete musieť použiť ďalšie miesto. Ďalšou nevýhodou je, že množina neumožňuje duplicitu, a preto by sa duplicitné prvky odstránili z pôvodného zoznamu. Pri konvenčnom binárnom vyhľadávacom spôsobe testovania existencie prvkov musí byť zoznam najprv triedený, a teda nezachováva poradie prvkov. bisect_left() vráti prvý výskyt prvku, ktorý sa má nájsť, a funguje podobne ako nižšia hranica() v C++ STL.
Poznámka: Funkcia bisect uvedie iba polohu, kam sa má prvok vložiť, ale nie podrobnosti o tom, či je prvok prítomný alebo nie.
Ukážka na overenie existencie prvku v zozname pomocou set() + v a zoradiť () + bisect_left()
zarovnať obrázok s cssPython3
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ýkon:
Checking if 4 exists in list ( using set() + in) : Element Exists Checking if 4 exists in list ( using sort() + bisect_left() ) : Element Exists>
Pomocou metódy find() skontrolujte, či prvok v zozname existuje
Dané Python kód skontroluje, či v zozname existuje číslo 15test_list>. Prevádza prvky zoznamu na reťazce a spája ich so spojovníkmi. Potom používa find()>metóda aby ste skontrolovali, či vo výslednom reťazci existuje podreťazec 15. Ak sa nájde 15, vypíše Áno, v zozname existuje 15; inak sa vypíše Nie, 15 v zozname 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ýkon
Checking if 15 exists in list Yes, 15 exists in list>
Pomocou funkcie Counter() skontrolujte, či prvok v zozname existuje
Poskytnutý kód Pythonu používa Counter> triedy zcollections>modul na výpočet frekvencie každého prvku vtest_list>. Potom skontroluje, či je frekvencia čísla 15 väčšia ako 0. Ak je frekvencia nenulová, znamená to, že 15 existuje v zozname a kód vypíše Áno, 15 existuje v zozname. V opačnom prípade sa vypíše Nie, 15 v zozname neexistuje. TheCounter>class efektívne počíta výskyty prvkov, čo umožňuje priamu kontrolu existencie.
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('Áno, 15 existuje v zozname') else: print('Nie, 15 neexistuje v zozname')> Výkon
Yes, 15 exists in list>
Zistite, či an prvok existuje v zozname pomocou bloku try-except
Jedným z ďalších spôsobov, ako skontrolovať, či prvok v zozname existuje, je použiť index() metóda. Táto metóda vráti index prvého výskytu prvku v zozname alebo vyvolá chybu ValueError, ak sa prvok v zozname nenachádza. Ak chcete použiť túto metódu, môžete zabaliť volanie funkcie index() do bloku try-except, aby ste zachytili chybu ValueError a vrátili hodnotu False, ak sa vyskytne:
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ýkon
True False>
Časová zložitosť: O(n), kde n je dĺžka zoznamu. Metóda index() iteruje cez zoznam, aby našla prvok, takže časová zložitosť je lineárna.
Priestorová zložitosť : O(1). Tento prístup nevyžaduje žiadny ďalší priestor.
Zistite, či prvok existuje v zozname pomocou funkcie filter().
Prístup krok za krokom
- Definujte zoznam my_list a Set element_to_check.
- Pomocou funkcie filter() vytvorte iterátor (filtered_elements), ktorý obsahuje prvky rovnaké ako element_to_check.
- Skonvertujte iterátor filter_elements na zoznam.
- Tento krok je potrebný, pretože funkcia filter() vracia iterátor. Zoznam teraz obsahuje prvky rovné elementu_to_check.
- Skontrolujte, či zoznam filter_list nie je prázdny.
- Ak zoznam nie je prázdny, znamená to, že prvok existuje v pôvodnom zozname.
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ýkon
Element exists in the list>
Časová zložitosť: O(n)
Zložitosť pomocného priestoru: O(n)