Hogyan lehet két listát összekapcsolni?
A 2014 októberi emelt érettségit csinálom, a 'Nézőteret', és ennél az egynél elakadtam. Ez az 5-ös feladat, de a 7-es feladatban is visszaköszönt.
Valami ilyennel próbálkoztam nem sok sikerrel:
a=[i for i in zip(foglaltsag[i],kategoria[i])]
For ciklussal sikerült? Ha ennyire nem megy a comprehension, nem kell erőltetni.
A zip() egyébként két tömböt vár(nem elemeket), és tuple-t ad vissza, már csak ezért sem jó amit írsz, meg egyébként sem.
Értékelve, hogy szereted a kihívásokat, az 5-ös feladat megoldási menete comprehensionökkel (és magyarázatokkal):
foglaltsag = "ooxxxoxoxoxoxxxooxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoooxxxxxxxxxxo"
kategoria = "332221111111111222334332222111111222233444433322222222333444"
ar = {'1': 5000; '2': 4000; '3': 3000; '4': 2000: '5': 1500}
# a zip használata: minden hely foglaltsága és kategóriája
helyek = [(fogl, kat) for (fogl, kat) in zip(foglaltsag, kategoria)]
# csak az eladott jegyek kategóriája
eladott_jegyek = [kat for (fogl, kat) in zip(foglaltsag, kategoria) if fogl=="x"]
# az egyes kategóriákban eladott jegyek száma
eladott_kategoriak = dict((kat, eladott_jegyek.count(kat)) for kat in set(eladott_jegyek))
# a bevétel
bevetel = sum([eladott_kategoriak.get(kat, 0)*ar[kat] for kat in ar.keys()])
A 7es feladat pedig egy sorban:
szabad = ''.join(map(lambda (fogl, kat): 'x' if fogl=='x' else kat, [(fogl, kat) for (fogl, kat) in zip(foglaltsag, kategoria)]))
Észrevettem egy nagyon apró hibát, hogy a foglaltságot nem tagonként köti a kategóriához, hanem soronként, de orvosoltam a hibát:
helyek = [(fogl, kat) for (fogl, kat) in zip(''.join(foglaltsag), ''.join(katagoria))]
eladott_jegyek = [kat for (fogl, kat) in zip(''.join(foglaltsag), ''.join(kategoria)) if fogl=="x"]
Igen, akkor szükség van erre, ha soronként tárolod az értékeket. Az én megoldásomban már egybe voltak fűzve a sorok, így is adtam meg mindent.
Tanulság: a konkrét megvalósítás függ a használt adatszerkezetektől.
Örülök, hogy tudtam segíteni.
Ja értem, szóval azért adtad meg úgy a foglaltságot és a kategóriát :))
Szépen kijött a 6-os,viszont a 7-esnél hibaüzenetet ír ki a lambda utáni zárójelnél. Van tipped, hogy mi lehet a hiba?
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!