Элегантный способ пропустить элементы в многократном

У меня есть большая итерация, на самом деле, большая итерация, заданная:

itertools.permutations(range(10))

Я хотел бы получить доступ к миллионному элементу. У меня уже есть проблема, решаемая разными способами.

Приведение итерации к списку и получение 1000000-го элемента:

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

Элементы, пропускаемые вручную до 999999:

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

Вручную пропуская элементы v2:

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

Использование islice из itertools:

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

Но я все еще не чувствую, что ни один из них не является элегантным способом сделать это на питоне. Первый вариант слишком дорогой, он требует вычисления всей итерации, чтобы получить доступ к одному элементу. Если я не ошибаюсь, islice внутренне выполняет те же вычисления, которые я только что сделал в методе 2, и почти точно так же, как 3-й, возможно, он имеет еще более избыточные операции.

Итак, мне просто любопытно, интересно, есть ли в python какой-то другой способ доступа к конкретному элементу итерируемого или, по крайней мере, пропустить первые элементы, более элегантным способом, или мне просто нужно использовать один из вышеперечисленных.

Ответы на вопрос(3)

Ваш ответ на вопрос