Hogyan tudnék ilyen összehasonlítást elvégezni?
A feladatot konkrétan pythonban szeretném megoldani.
A probléma a következő: Van 2 listám, A és B. Először A listához hozzá kellett vennem B-ből azokat az elemeket, amelyek nincsenek benne A-ban és amik B-ben is és A-ban is benne voltak, azokat felül kellett írni A-ban.
Tehát A egy bővebb lista lett, amin elvégeztem módosításokat. Most viszont ki kéne írnom a módosításokat. Ehhez B listából külön vettem C listába az új elemeket még mielőtt hozzáadtam volna őket A-hoz. Valahogy 2 for ciklusban össze akarnám hasonlítani A és C lista elemeit és, hogyha A[i] != C elemeivel, akkor A[i]-t kiírnám.
if A[i] not in C:
De nem lehet a berakas kozben kiirni? Akkor C-re nem is lenne szukseg.
Nekem úgy tűnik hogy A és B halmazok, azaz elemeik egyediek és ezeken kéne végezni halmazműveleteket:
C = B - A # különbség
A = A | C # unió
Hogy ha listák, amiknek az elemei nem egyediek akkor pontosítsd a feladatleírásod. Ha B-ben egy érték 3x szerepel ami A-ban csak 2x, akkor hozzáadjuk még egyszer A-hoz azt hogy 3x szerepeljen, vagy ahogy írtad, nem csinálunk vele semmit és csak azokat kell hozzáadni amik nincsenek A-ban? Ha az utóbbi, akkor csak simán szűrni tudjuk B-t egy for ciklusban:
C = [x for x in B if x not in A]
A = A + C
Ha az előbbi, akkor a két lista különbségét kell képezni úgy, hogy figyelembe kell venni hogy többször is szerepelhet ugyan az az elem:
for x in A:
. . try:
. . . . B.remove(x)
. . except ValueError:
. . . . pass
A = A + B
Ha a B-t nem akarod módosítani és C-be akarod tenni a különbségeket akkor másold le a B-t és a másolattal dolgozz:
C = B[:]
"Az a gond, hogy nem csak számokról van szó. Ezért a B.remove(x)-nek nem lenne értelme."
Ezt nem igazán értem. Nem csak számokon működik.
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!