Kétdimenziós listában hogyan tudom fésülni pythonban úgy hogy töröljen elemeket? lent írom részletesebben.
Készíts egy programot, amely egy kétdimenziós listában tárol ötször három darab véletlenszámot [-5;5] intervallumon. A program írja ki a kétdimenziós lista elemeit, majd fésülje át a lista tartalmát és törölje belőle a negatív számokat. Végül ismét kerüljön kiírásra lista tartalma!
ezt írtam rá,az eleje sem sikerült szerintem túl jól de az müködik viszont a törlés az nem. Indexelés nélkül csak a remove parancsot találtam viszont az nem törli mindegyiket.
lista4=[]
lista3=[]
lista2=[]
lista1=[]
import random
lista=[]
lista.append(lista1)
lista.append(lista2)
lista.append(lista3)
lista.append(lista4)
for i in range(3):
lista1.append(random.randint(-25,25))
lista2.append(random.randint(-25,25))
lista3.append(random.randint(-25,25))
lista4.append(random.randint(-25,5))
print(lista)
halmaz=-1
for szám in lista:
db=-1
halmaz+=1
for sz in szám:
db+=1
if 0>sz:
print(halmaz,db)
lista[halmaz].pop(db)
print(lista)
A lista feltöltése megoldható két egymásba ágyazott ciklussal:
A kírás - ha nem szükséges a "formázott" megjelenítés - megoldható print() segítségével:
print(lista)
A törlés többféle módon vitelezhető ki.
Megoldható a feltöltés analógiájaként:
(itt az ujlista változó tartalmazza a negatív számokat nélkülöző listát)
Kivitelezhető list comprehension:
segítségével:
lista = [[elem for elem in sor if elem >= 0] for sor in lista]
Vagy megoldható a funkcionális programozás beépített függvényeivel
például:
Az külön nagyon jó, hogy tömbözni/listázni kell, de azért egyesével tárolod a belső tömböket.
Sikerült megérteni a feladatot, az a lényeg.
"A törlés többféle módon vitelezhető ki."
Valójában nem törlés amiket bemutattál. Azok mindegyike új listát hoz létre.
Így például, ha létezik lista-nak legalább egy eleme, ezen elem szintén egy lista, akkor a :
l=lista[0]
értétékadó utasítás hatására l változó és lista[0] ugyanarra a lista típusú objektumra mutat.
Ha elvégezzük az általad bemutatott "törlés" bármelyikét és lista[0] :
- "törlés" előtt tartalmazott negatív értéket l és lista[0] által elért objektum tartalma különbözni fog
- "törlés" előtt nem tartalmazott negatív értéket l és lista[0] által elért objektum tartalma egyezni fog, de két külön lista objektumra mutatnak.
Ez valóban töröl (hurok ismétléses vezérlési szerkezettel):
köszi szépen,egy pár órát törtem rajta a fejem :D
új listához való hozzáadás jelentősen egyszerűbb viszont ez egy gyakorló feladat amiben az szerepel hogy töröljem a meglévő listából és érdekelt ennek a megoldása.
Köszönöm,hasznos volt mind a kettő 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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!