Kezdőoldal » Számítástechnika » Programozás » Pythonban tényleg így kell...

Pythonban tényleg így kell csinálni? Nem akarom elhinni.

Figyelt kérdés

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?



2018. dec. 18. 12:09
1 2
 1/20 anonim ***** válasza:

Try excep finally?


[link]

2018. dec. 18. 12:11
Hasznos számodra ez a válasz?
 2/20 A kérdező kommentje:

#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?

2018. dec. 18. 12:40
 3/20 anonim ***** válasza:
100%

pozicio = t.index(x) if x in t else -1

[link]

2018. dec. 18. 12:44
Hasznos számodra ez a válasz?
 4/20 Ozmium42 ***** válasza:
100%
Pedig a try lesz az, amit keresel. Ha sikerül a try rész, akkor meglesz az index. Ha nem sikerül, akkor kezeled a kivételt. Nem kell kétszer csinálni semmit. Azért nem ad vissza -1-et az index(), mert a python indexelésben a negatív számok is értelmesek. A -1 az utolsó elemre mutat.
2018. dec. 18. 13:44
Hasznos számodra ez a válasz?
 5/20 anonim ***** válasza:

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

2018. dec. 18. 14:44
Hasznos számodra ez a válasz?
 6/20 anonim ***** válasza:

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

2018. dec. 18. 14:47
Hasznos számodra ez a válasz?
 7/20 A kérdező kommentje:
Rendben, köszönöm az értelmes válaszokat.
2018. dec. 18. 14:48
 8/20 A kérdező kommentje:

#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.

2018. dec. 18. 14:52
 9/20 anonim ***** válasza:

#10, Mit nem értesz?

x: {-5,-4,-3,-2,-1}

x.index(4)=-1

Honnan tudod, hogy ez hiba vagy való eredmény?

2018. dec. 18. 14:58
Hasznos számodra ez a válasz?
 10/20 anonim ***** válasza:
..Jó, igen, jogos, én kevertem a metódusokat, mea culpa!
2018. dec. 18. 14:59
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!