"and" / "or" python?
x = [1, 2, 3, 4, 5, 6]
y = [2, 4, 1]
while len(x) != 0 and len(y) !=0:
----if len(x) != 0:
--------x.pop(0)
----if len(y) != 0:
--------y.pop(0)
print(x)
print(y)
Itt most arra számítanék, hogy a loop után mind2 üres lesz, de nem. Akkor lesz mind2 üres ha "or"-val csinálom. És ezt most nem értem, hogy miért van.
Egyszerű logika.
len(x) != 0 and len(y) !=0: magyarul x nem üres és y nem üres. Ha az egyik üres a kettő közül, akkor az állítás hamis.
len(x) != 0 or len(y) !=0: x nem üres vagy y nem üres. Ez az állítás csak akkor lesz hamis, ha mindkettő üres.
De igy is kinullazhatod oket:
y=[]
x=[]
es akkor uresek lesznek. ciklus nelkul
Vagy kicsit másképp fogalmazva:
while len(x) != 0 and len(y) !=0:
Csak akkor vizsgálja meg bármelyik listát, ha mindkettőben(!) van még elem. Amikor az y kiürül, a cilusfeltétel hamis lesz, vagyis innentől az x-re már rá sem néz, tehát az nem fog kiürülni.
while len(x) != 0 or len(y) !=0:
Ha külön-külön bármelyik üres, akkor megnézi őket. Vagyis ha az y üres, akkor is igaz marad a feltétel.
Ha mindenképpen pop-pal akarod (ld. #4), akkor inkább külön ciklussal csinálnám, semmivel sem lassabb, és az if-eket is meg tudod spórolni.
while len(x) !=0:
----x.pop(0)
while len(y) !=0:
----y.pop(0)
** ".. or ... Ha külön-külön bármelyik üres"
Bocsánat, ha bármelyik NEM üres. :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!