Ich glaube, dies ist die lesbare Version ist:
>>> from itertools import izip
>>> any(first == second for first, second in izip(a, a[1:]))
True
Die Bewertung der any
wird faul sein. Paare werden auf Anforderung von izip
erstellt. Wenn Sie Python 3 verwenden, zip
bereits tut, was izip
tut in Python 2.
Erläuterung:
>>> zip(a, a[1:])
[(9, 4), (4, 3), (3, 6), (6, 4), (4, 4), (4, 3), (3, 6), (6, 4)]
wird Tupeln von Paaren benachbarter Elemente erstellen. any
wird ein Generatorausdruck übergeben, um zu überprüfen, ob eines dieser Tupel zwei gleiche Elemente enthält.
Wenn Sie die Speichereffizienz optimieren wollen noch weiter, rufen (i)zip
wie folgt aus:
>>> it = iter(a)
>>> next(it, None)
9
>>> zip(a, it)
[(9, 4), (4, 3), (3, 6), (6, 4), (4, 4), (4, 3), (3, 6), (6, 4)]
dies vermeiden, wird die Liste a[1:]
zu schaffen.
Haben Sie eine for-Schleife ausprobiert und überprüfen Sie 'a [i] == a [i + 1]'? –
Ich bekam einen Index außerhalb des Bereichsfehler – boson
Dann sollten Sie 'len (a) - 1' für das Ende des Bereichs verwendet haben. –