Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnék ilyen összehason...

Hogyan tudnék ilyen összehasonlítást elvégezni?

Figyelt kérdés

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.


2016. ápr. 10. 13:29
 1/4 anonim ***** válasza:

if A[i] not in C:


De nem lehet a berakas kozben kiirni? Akkor C-re nem is lenne szukseg.

2016. ápr. 10. 14:26
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

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[:]

2016. ápr. 10. 19:06
Hasznos számodra ez a válasz?
 3/4 A kérdező kommentje:
Az a gond, hogy nem csak számokról van szó. Ezért a B.remove(x)-nek nem lenne értelme. Közben sikerült megoldanom a problémát. Szétválasztottam az eseteket és mielőtt a B szerinti módosításokat elvégeztem volna A-n a B-ben lévő egyedi elemeket eltároltam a C-ben, ahogy azt fent írtam, aztán a maradék elemet meg a D-be raktam. Ez nem precíz megfogalmazás, a feladat szövege/ismerete nélkül nem sokat jelent, de a lényeg az, hogy megoldottam a problémát :D
2016. ápr. 10. 19:25
 4/4 anonim ***** válasza:

"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.

2016. ápr. 10. 20:56
Hasznos számodra ez a 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

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!