Pythonban tényleg így kell csinálni? Nem akarom elhinni.
Van egy nagy adattömböm (t), keresek benne egy x értéket, ill. annak pozícióját:
pozicio = t.index(x)
De ha x nem szerepel t-ben, akkor hibaüzenettel elszáll, tehát előtte még kell (???):
if x in t vagy if t.count(x)>0 (???)
Kétszer kell megkerestetni? Miért nem ad vissza pl. -1-et a t.index(x), ha nincs benne, ahelyett hogy kiakadna?
#1: Köszi, de nem ezt keresem.
Nem hiszem, hogy ezt ne lehetne egy kivétel generálás, kezelés (lassú, mint a fene, kb. mintha 2* keresném) nélkül megoldani.
Nincs olyan verziója az index()-nek, helyettesítője, ami "simán", pl. -1-gyel jelzi, hogy nincs benne?
pozicio = t.index(x) if x in t else -1
Mekkora az a nagy adattömböd? Miért jelent az gondot ha 2x is lassabb lenne?
A try except-es dolgot meg honnan veszed hogy 2x lassabb? Letesztelted?
Mert én vettem a fáradságot és igen.( Külön mértem a futási időt python-nal)
Az index a legelső előfordulásig keres (ha létezik).
Az összehasonlítás akkor fer ha amikor nincs benne és kivételt dob és azt elkapjuk ezt összemérjük azzal amikor benne van, de a legrosszabb eset lesz azaz az utolsó elem lesz a keresett érték és máshol nem tartalmazza azt az értéket a tömb (lista igazából mint tudjuk azaz list). Ezt megismételtem többször különböző tömbökön. Én nem láttam szignifikáns különbséget keresési időben. Többször alatt értem hogy ugyanazon a tömbön ugyanazokkal az értékekkel is többször mivel a multikaszting miatt vannak futási idő ingadozások. Továbbá minél kevesebb minden fusson a háttérbe, hogy ne zavarjon bele a futási időbe.
Megjegyzés.:
A matematika kiadja, hogy várható értékbe egy egyenletes eloszlású random tömbben az átlagos keresési idő a tömb elemszámának a fele(, hogy megtaláljuk a keresett értéket).
"Azért nem ad vissza -1-et az index(), mert a python indexelésben a negatív számok is értelmesek."
Illetve a lista elemei között lehet -1, hiszen a visszatérő érték nem az index, hanem a lista megfelelő eleme.
Kérdező, szokj hozzá, hogy a hibajelzés ma már megszokott módja a kivétel, amit le kell kezelni. Ha nem kezeled le, akkor "elszáll" (default handler fut le). A kivétel kezelés (elkapás) eszköze a try-catch blokk.
Az egy más kérdés, hogy miért nincs a listának is default érték megadási lehetősége, mint a dict-nek. De ez a lényegen nem változtat.
#8: "Illetve a lista elemei között lehet -1, hiszen a visszatérő érték NEM AZ INDEX, hanem a lista megfelelő eleme."
???, ... hülyeség.
#10, Mit nem értesz?
x: {-5,-4,-3,-2,-1}
x.index(4)=-1
Honnan tudod, hogy ez hiba vagy való eredmény?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!