Elegante Methode zum Überspringen von Elementen in einer Iterationsdatei

Ich habe eine große iterable, in der Tat eine große iterable gegeben durch:

itertools.permutations(range(10))

Ich möchte auf das millionste Element zugreifen. Ich habe das Problem schon auf verschiedene Arten gelöst.

Casting iterabel, um das 1000000ste Element aufzulisten:

return list(permutations(range(10)))[999999]

Elemente manuell überspringen bis 999999:

p = permutations(range(10))
for i in xrange(999999): p.next()
return p.next()

Elemente v2 manuell überspringen:

p = permutations(range(10))
for i, element in enumerate(p):
    if i == 999999:
        return element

Verwenden von islice aus itertools:

return islice(permutations(range(10)), 999999, 1000000).next()

Aber ich habe immer noch nicht das Gefühl, dass keiner von ihnen die elegante Art des Pythons ist, das zu tun. Die erste Option ist einfach zu teuer. Sie muss die gesamte Iteration berechnen, um auf ein einzelnes Element zuzugreifen. Wenn ich mich nicht irre, führt islice intern die gleiche Berechnung durch, die ich gerade in Methode 2 durchgeführt habe, und ist fast genau so groß wie die dritte, vielleicht hat sie sogar noch redundantere Operationen.

Ich bin also nur neugierig und frage mich, ob es in Python eine andere Möglichkeit gibt, auf ein konkretes Element eines Iterables zuzugreifen oder zumindest die ersten Elemente auf elegantere Weise zu überspringen, oder ob ich nur eines verwenden muss von den oben genannten.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage