Hogyan kellene ezt elegánsabban megoldani pythonban? (könnyű)
Van egy viszonylag egyszerűbb feladat:
2 különböző lista (a lista input megoldása nem feladat, elég megadni)közös elemit kell kiíratni ismétlés nélkül, én erre jutotam:
a = [5000,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,777,4]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,777,1,2,3,34,4,5,6,7]
e=[]
if len(a)>len(b):
c=a
d=b
else:
c=b
d=a
for n in range (0,len(c)):
for m in range (0,len(d)):
if c[n]==d[m] and c[n] not in e:
e.append(c[n])
print e
Tudom, hogy eléggé suta a hosszellenörzés, de teszi a dolgát, viszont 1000%, hogy van ennél szebb megoldás is, valaki tudna tippet adni? :)
Előre is köszi!
a = [12, 23, 4, 5, 23, 78, 99]
b = [34, 4, 56, 77, 66, 99]
intersect = [x for x in a if x in b]
Azt hiszem, arre mar ra lehet mondani, hogy "pythonic". :)
Ha fontos, hogy ismetles nelkuli legyen, akkor:
[x for x in set(a) if x in b]
print set(a) & set(b)
Mind a két listát halmazzá konvertálod, ekkor a & operátor adja vissza a két halmaz közös elemit.
Megformázva:
>>> a = [5000,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,777,4]
>>> b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,777,1,2,3,34,4,5,6,7]
>>> print ', '.join(map(str, set(a) & set(b)))
1, 2, 3, 4, 5, 8, 777, 13, 34
#6
Nem lenne gond akkor sem ha nem lennél kezdő - addig nem kell ismerni az eszközöket amíg nincs rájuk szükség. A legtöbb programnyelvben annyi okosság van hogy nagyon-nagyon sokáig tartana mindegyiken átrágni magad, ha van egy adott feladat amire úgy érzed hogy túl nyakatekert lenne a megoldásod és kutakodsz az már teljesen jó - mint pl most. A normális változónevekre viszont tényleg jó ha minél előbb rászoktatod magad, ezekből később csak a baj lesz.
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!