Exactamundo! Det lyfter också frågan om huruvida valet att använda en lista för de inre elementen är vettigt. Troligen borde det varit en tuple, då det verkar vara någon form av koordinat (kanske än hellre en namedtuple
, om man vill finlira) där varje element har en specifik betydelse. Hade de varit tuplar så hade set(l1) & set(l2)
fungerat direkt.
Det är också oklart om en lista är rätt datastruktur att samla dessa tuplar i till att börja med. Är ordningen relevant? Kan samma element förekomma multipla gånger, och har det i så fall någon mening? Om inte: använd ett set
från första början, så löser mycket av problemet sig självt.
Sammanfattat så kanske ett set
av tuplar vore mer passande än en lista av listor här.
När jag ändå är på tråden:
Man kan spara några hakparenteser och skriva:
if set(tuple(l) for l in l1) & set(tuple(l) for l in l2):
print("GG") # ← Nu är vi Python 3-kompatibla! :-)
Argumenten blir nu (förutom aningens mer lättlästa) snarare generator expressions med "lat uppbyggnad", vilket ibland är oumbärligt mycket bättre, och åtminstone inte sämre.
Ser man en liknande konvertering i kod så är det dock en stor blinkande neonskylt som varnar om att något i designen troligen inte är så smidigt som det skulle kunna vara. Av de fragment vi ser här så misstänker jag starkt åtminstone att de inre listorna borde vara tuplar.