20

iterable が添字可能でない場合があります。からのリターンを言うitertools.permutations:

ps = permutations(range(10), 10)
print ps[1000]

Pythonはそれを不平を言うでしょう'itertools.permutations' object is not subscriptable

もちろん、n 番目の要素を取得するために、回実行next()することもできます。nそうするためのより良い方法があるのだろうか?

4

2 に答える 2

32

nthのレシピを使用するだけですitertools

>>> from itertools import permutations, islice
>>> def nth(iterable, n, default=None):
        "Returns the nth item or a default value"
        return next(islice(iterable, n, None), default)

>>> print nth(permutations(range(10), 10), 1000)
(0, 1, 2, 4, 6, 5, 8, 9, 3, 7)
于 2012-08-17T14:38:48.120 に答える