Kezdőoldal » Számítástechnika » Programozás » Python - Ez hogy működhet?

Csxeba kérdése:

Python - Ez hogy működhet?

Figyelt kérdés

Probléma: szótárból kulcs-érték párt törölni anélkül, hogy a memóriából törölném.

Kód:


def foobar(szotar, kulcs):

(tab)return {szotar[i]: i for i in szotar if i != kulcs}


Ez hogy lehet, hogy működik? Hogy lehet ott for meg if?



2013. szept. 16. 17:23
 1/6 anonim ***** válasza:
A forral végigviszed az i-t a kulcsokon. Ha i nem a megadott kulcs, akkor bekerül a visszatérési értékbe.
2013. szept. 16. 19:44
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:
Csak egy kis programozási stílus: én egy ilyen ciklus változóját semmiképpen nem jelölném i-vel! Egyrészt mert nem ismered előre a kulcsok típusát, másrészt meg deklaráltan meghatározatlan sorrendben fognak előjönni. A legjobb módszer, hogy összezavard magad vagy mást, aki használja a kódot.
2013. szept. 17. 06:29
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Ez mind szép és jó, de engem a dolog szintaktikája érdekelne. Mióta létezik ilyen for és ilyen if a Pythonban?

Hogyan írhatóak egy másik utasítás mögé? Van még más helyzet is, amikor ilyen technikát lehet alkalmazni? Van ennek valami neve is?

2013. szept. 17. 09:11
 4/6 anonim ***** válasza:
comprehension-nek hívják ezt a struktúrát, nagyon jó dolgokat lehet vele csinálni, nagyon tömören. A pythoon egyik legjobb tulajdonsága
2013. szept. 17. 10:11
Hasznos számodra ez a válasz?
 5/6 A kérdező kommentje:
Köszi, na, erre voltam kíváncsi.
2013. szept. 17. 10:21
 6/6 anonim ***** válasza:

Nincs mit.

Küldök pár példát, amiket én csináltam gyakorlásképpen. Ha kipróbálod, elemezgeted rájössz mire jó a comprehension.


## Task 5

first_five_squares = { x*x for x in {1,2,3,4,5} }


## Task 6

first_five_pows_two = { 2**x for x in {0,1,2,3,4} }


## Task 9

base = 10

digits = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

three_digits_set = {x*base**2+y*base+z for x in digits for y in digits for z in digits}


## Task 10

S = {1, 2, 3, 4}

T = {3, 4, 5, 6}

S_intersect_T = {x for x in S for y in T if x==y}


## Task 13

cartesian_product = [[x, y] for x in {'A','B','C'} for y in {1,2,3}] # use form: [ ... {'A','B','C'} ... {1,2,3} ... ]


## Task 14

S = {-4, -2, 1, 2, 5, 0}

zero_sum_list = [(i,j,k) for i in S for j in S for k in S if i+j+k==0]


## Task 15

exclude_zero_list = [(i,j,k) for i in S for j in S for k in S if i+j+k==0 if not(i==0 and j==0 and k==0)]


## Task 16

first_of_tuples_list = [(i,j,k) for i in S for j in S for k in S if i+j+k==0 if not(i==0 and j==0 and k==0)][0]


## Task 30

def list2dict(L, keylist): return { keylist[k]:L[k] for k in range(len(L)) }

2013. szept. 17. 12:51
Hasznos számodra ez a válasz?

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!