Verfasst: Montag 7. Februar 2005, 23:43
Ich habe Deine Beschreibung auf die Frage von Dookie, was das Skript eigentlich tun soll, mal nahezu "wortwörtlich" in Python umgesetzt. Das ist recht effizient. Jedes Element wird nur einmal betrachtet und man braucht auch keine Extradaten.
In der ersten Schleife wird das erste Auftreten von dem "Tupel" gesucht und wenn es gefunden wird, wird "OK" ausgegeben und in der zweiten Schleife werden dann die beiden verschiedenen Varianten von Duplikaten gesucht, rausgefiltert und entsprechende Ausgaben gemacht. Das Ergebnis ist:
Code: Alles auswählen
data = [["A", 2], ["B", 4], ["I", 6], ["L",8],
["A", 6], ["T", 6], ["C", 4], ["A",2]]
def foo(iterable, sample):
it = iter(iterable)
for element in it:
yield element
if element == sample:
print 'OK'
break
(sample_str, sample_int) = sample
for element in it:
(element_str, element_int) = element
if element_str == sample_str:
if element_int == sample_int:
print 'DUPLICATE'
else:
print 'DIFFERENT'
else:
yield element
print list(foo(data, data[0]))
Code: Alles auswählen
OK
DIFFERENT
DUPLICATE
[['A', 2], ['B', 4], ['I', 6], ['L', 8], ['T', 6], ['C', 4]]