Kezdőoldal » Számítástechnika » Programozás » Meg tudom ezt írni egy sorban...

Meg tudom ezt írni egy sorban Pythonban?

Figyelt kérdés

for szam in lista:

---if szam < x:

------lista.remove(szam)



2018. febr. 12. 18:52
1 2
 11/20 anonim ***** válasza:

Csak kérdés.. :)

Az #5-9 megoldások nem egy új listát kreálnak? A lista.remove() pedig a meglévőt módosítja?

2018. febr. 13. 14:40
Hasznos számodra ez a válasz?
 12/20 anonim ***** válasza:

#11: Új listát hoz létre, de alkalmazható a meglevő módosítására

lista = [szam for szam in lista if szam >= x]

illetőleg:

lista = list(filter(lambda szam : szam >= x, lista))

2018. febr. 13. 15:04
Hasznos számodra ez a válasz?
 13/20 anonim ***** válasza:
Értem, köszönöm.
2018. febr. 13. 15:57
Hasznos számodra ez a válasz?
 14/20 anonim ***** válasza:

Hiába állítod be a lista változó értékét az új listára, attól az még egy másik lista, nem?

Pythonhoz nem értek, de egyéb nyelveken nagyon nem mindegy. Pl ha valahol máshol van egy "referencia" az adott listára, akkor így nem fog működni.

2018. febr. 13. 16:22
Hasznos számodra ez a válasz?
 15/20 anonim ***** válasza:

Hű, ezen most én is elgondolkodtam. :)

Elvileg a Pythonban minden objektum. A lista is, az elemek is. Ha magára a listára hivatkozok, akkor az felülíródik, de a rá való hivatkozás nem változik. A lista objektum belül talán másik memóriaterületre mutat, de a "kívülről" rá való hivatkozást ez nem befolyásolja.

Az elemek pedig ugyancsak hivatkozások, amik az eredeti tartalomra mutatnak továbbra is.

(?)

2018. febr. 14. 17:51
Hasznos számodra ez a válasz?
 16/20 anonim ***** válasza:

A python interaktív shelljét használva:

>>> lista = [1,2,3,4,5,6]

>>> x= 3

>>> globals()

{'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'x': 3, '__name__': '__main__', 'lista': [1, 2, 3, 4, 5, 6], '__doc__': None}

>>> lista = list(filter(lambda szam : szam >= x, lista))

>>> globals()

{'__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'x': 3, '__name__': '__main__', 'lista': [3, 4, 5, 6], '__doc__': None}


Szóval a parancs kiadása után nem jön létre új változó, hanem a régit írja felül.

2018. febr. 14. 18:28
Hasznos számodra ez a válasz?
 17/20 anonim ***** válasza:

#16: és ezt most mért írtad, nyilván a lista nevű változóból egy van


Az a kérdés, hogy ekkor mi történik? Más nyelvekben iylenkor a lista2 marad 6 elemű, míg ha magából a listából veszed ki az elemeket akkor mindkét lista 4 elemű lesz.


lista = [1,2,3,4,5,6]

lista2 = lista

x= 3

globals()

lista = list(filter(lambda szam : szam >= x, lista))

globals()

2018. febr. 14. 19:07
Hasznos számodra ez a válasz?
 18/20 anonim ***** válasza:

Ezt úgy lenne érdemes kipróbálni, hogy a lista elemei "explicit" objektumok, hogy jobban lássuk, hogy pl. a lista és a lista2 adott eleme ugyanaz-e, vagy két külön objektum.


Na, közben ki is próbáltam: A lista hivatkozott objektumai ugyanazok maradnak.

Kicsit olyan, mint a shallow copy? :)


----

class C():

__def __init__(self,x):

____self.x = x


o1=C(1)

o2=C(2)

lista = [o1,o2]

lista2 = lista


print(lista2)

print(lista)

lista = list(filter(lambda elem : elem.x <= 1, lista))

print(lista2)

print(lista)

----



[<__main__.C object at 0xb70ab94c>, <__main__.C object at 0xb70abb6c>]

[<__main__.C object at 0xb70ab94c>, <__main__.C object at 0xb70abb6c>]

[<__main__.C object at 0xb70ab94c>, <__main__.C object at 0xb70abb6c>]

[<__main__.C object at 0xb70ab94c>]

2018. febr. 15. 01:52
Hasznos számodra ez a válasz?
 19/20 anonim ***** válasza:
Tehát akkor nem jó az új lista létrehozás, mert ha van egy referenciád (vagy minek hívják Pythonban) valahol a kódban a listára, más eredményt fogsz kapni minha a létező listából vennéd ki az elemeket.
2018. febr. 15. 18:13
Hasznos számodra ez a válasz?
 20/20 anonim ***** válasza:
#19, De hát épp az jött ki, hogy nem. A példában ugyanaz maradt a lista[0], objektum cím alapján.
2018. febr. 16. 08:07
Hasznos számodra ez a válasz?
1 2

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

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!