Sąrašas yra svarbus Python konteineris, nes jame saugomi visų tipų duomenų elementai kaip kolekcija. Tam tikrų sąrašo operacijų išmanymas yra būtinas dienos programavimui. Šiame straipsnyje aptariamas greičiausias būdas patikrinti, ar reikšmė yra sąraše, ar nenaudojama Python .
Pavyzdys
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.>
Patikrinkite, ar elementas yra Python sąraše
- Naudojant in pareiškimas
- Naudojant a kilpa
- Naudojant bet kokia() funkcija
- Naudojant skaiciuoti () funkcija
- Naudojant rūšiuoti su bisect_left ir rinkinys ()
- Naudojant rasti () metodas
- Naudojant Skaitiklis () funkcija
- Naudojant pabandykite - išskyrus bloką
Patikrinkite, ar sąraše yra elementas, naudodami in pareiškimas
Taikant šį metodą, norint patikrinti tikslinio elemento egzistavimą, galima lengvai naudoti kilpą, kuri kartojasi per visus elementus. Tai paprasčiausias būdas patikrinti elemento egzistavimą sąraše. Python yra įprasčiausias būdas patikrinti, ar elementas yra sąraše, ar ne. Šis konkretus būdas grąžina True, jei elementas yra sąraše, ir False, jei elemento sąraše nėra. Norint taikyti šį tikrinimo metodą, sąrašo nereikia rūšiuoti.
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')> Išvestis
not exist>
Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(n), kur n yra bendras elementų skaičius.
Naudodami kilpą suraskite, ar sąraše yra elementas
Duotas Python kodas inicijuoja sąrašą pavadinimutest_list>su kai kuriais sveikųjų skaičių elementais. Tada jis kartoja kiekvieną sąrašo elementą naudojant afor>kilpa. Viduje kilpa , jis patikrina, ar dabartinis elementasi>yra lygi reikšmei 4 naudojant anif>pareiškimas. Jei sąlyga teisinga, konsolėje išspausdinama Element Exists. Kodas išves pranešimą, jei sąraše yra skaičius 4, ir tokiu atveju bus atspausdintas elementas egzistuoja, nes sąraše yra skaičius 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')> Išvestis:
Element Exists>
Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)
Patikrinkite, ar sąraše yra elementas, naudodami funkciją any().
Tai pasiekiama naudojant any()>funkcija su generatoriaus išraiška. Generatoriaus išraiška kartojasi per kiekvieną elementątest_list>ir patikrina, ar jis sąraše pasirodo daugiau nei vieną kartą. Šio patikrinimo rezultatas išsaugomas kintamajameresult>. Galiausiai kodas išspausdina pranešimą, nurodantį, ar yra pasikartojančių elementų, rodant Ar eilutėje yra sąrašo elementas: True, jei yra dublikatų, ir Ar eilutėje yra bet koks sąrašo elementas: False, jei nėra dublikatų.
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)))> Išvestis:
Does string contain any list element : True>
Naudodami funkciją count() suraskite, ar sąraše yra elementas
Galime naudoti įmontuotą Python sąrašas metodas, count (), kad patikrintumėte, ar pateiktas elementas yra sąraše. Jei patvirtintas elementas yra sąraše, skaiciuoti () metodas parodys, kiek kartų jis pasitaiko visame sąraše. Jei tai yra ne nulis teigiamas skaičius, tai reiškia, kad elementas yra sąraše. Rodoma, kaip patikrinti elementų egzistavimą sąraše naudojant skaiciuoti () .
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('Taip, sąraše yra 15') else: print('Ne, 15 sąraše nėra')> Išvestis:
Checking if 15 exists in list Yes, 15 exists in list>
Patikrinkite, ar sąraše yra elementas, naudodami rūšiavimą su bisect_left ir set
Sąrašo konvertavimas į rinkinį ir naudojimas tai gali būti veiksmingesnis nei tik jo naudojimas. Tačiau efektyvumo privalumas turi ir tam tikrų minusų. Vienas iš jų yra tas, kad sąrašo tvarka neišsaugoma, o jei pasirinksite sudaryti naują sąrašą, turėsite naudoti papildomos vietos. Kitas trūkumas yra tas, kad rinkinys neleidžia dubliuotis, todėl pasikartojantys elementai būtų pašalinti iš pradinio sąrašo. Taikant įprastą dvejetainės paieškos elementų egzistavimo testavimo būdą, pirmiausia reikia surūšiuoti sąrašą, todėl elementų tvarka neišsaugoma. bisect_left() grąžina pirmą rasto elemento pasireiškimą ir veikė panašiai kaip apatinė riba() C++ STL.
Pastaba: Bisect funkcija nurodys tik vietą, kur įterpti elementą, bet ne informaciją apie tai, ar elementas yra, ar ne.
Rodoma, kaip patikrinti elemento egzistavimą sąraše naudojant rinkinys () + į ir Rūšiuoti () + 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')> Išvestis:
Checking if 4 exists in list ( using set() + in) : Element Exists Checking if 4 exists in list ( using sort() + bisect_left() ) : Element Exists>
Patikrinkite, ar sąraše yra elementas, naudodami Find() metodą
Duotas Python kodas patikrina, ar sąraše yra skaičius 15test_list>. Jis konvertuoja sąrašo elementus į eilutes ir sujungia juos su brūkšneliais. Tada jis naudoja find()>metodas norėdami patikrinti, ar gautoje eilutėje yra 15 poeilutė. Jei randama 15, išspausdinama Taip, sąraše yra 15; kitu atveju spausdinama Ne, 15 sąraše nėra.
# 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')> Išvestis
Checking if 15 exists in list Yes, 15 exists in list>
Patikrinkite, ar sąraše yra elemento, naudodami funkciją Counter ().
Pateiktas Python kodas naudoja Counter> klasė išcollections>modulis, skirtas apskaičiuoti kiekvieno elemento dažnįtest_list>. Tada patikrinama, ar skaičiaus 15 dažnis yra didesnis nei 0. Jei dažnis nėra nulis, tai reiškia, kad sąraše yra 15, o kodas išspausdinamas Taip, sąraše yra 15. Kitu atveju spausdinama Ne, 15 sąraše nėra. TheCounter>klasė efektyviai skaičiuoja elementų įvykius, todėl galima tiesiogiai patikrinti egzistavimą.
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('Taip, 15 yra sąraše') else: print('Ne, 15 sąraše nėra')> Išvestis
Yes, 15 exists in list>
Raskite, jei an an elementas egzistuoja sąraše naudojant try-except bloką
Kitas būdas patikrinti, ar elementas yra sąraše, yra naudoti indeksas() metodas. Šis metodas grąžina pirmojo elemento atsiradimo sąraše indeksą arba pateikia ValueError, jei elemento sąraše nėra. Norėdami naudoti šį metodą, iškvietimą į index() galite įterpti į try-except bloką, kad gautumėte ValueError ir grąžintumėte False, jei ji įvyktų:
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>
Išvestis
True False>
Laiko sudėtingumas: O(n), kur n yra sąrašo ilgis. Metodas index() kartojasi per sąrašą, kad surastų elementą, todėl laiko sudėtingumas yra tiesinis.
Erdvės sudėtingumas : O(1). Šis metodas nereikalauja papildomos vietos.
Raskite, ar sąraše yra elementas, naudodami filtro () funkciją
Žingsnis po žingsnio metodas
- Apibrėžkite sąrašą my_list ir Set element_to_check.
- Naudokite funkciją filtras () norėdami sukurti iteratorių (filtruoti_elementai), kuriame yra elementų, lygių elementui_to_check.
- Konvertuokite iteratoriaus filtruotus_elementus į sąrašą.
- Šis veiksmas būtinas, nes funkcija filtras() grąžina iteratorių. Dabar sąraše yra elementų, lygių element_to_check.
- Patikrinkite, ar sąrašas filtered_list nėra tuščias.
- Jei sąrašas nėra tuščias, tai reiškia, kad elementas yra pradiniame sąraše.
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')> Išvestis
Element exists in the list>
Laiko sudėtingumas: O(n)
Pagalbinės erdvės sudėtingumas: O(n)