2012-08-17 7 views
17

時には、iterableに添字が付いていないことがあります。添え字のない繰り返しからn番目の要素を取得する方が良い

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

Pythonは1のn番目の要素を取得するためにnnext()を行うことができます。もちろん、'itertools.permutations' object is not subscriptable

と文句を言うだろう:itertools.permutationsからのリターンを言います。ちょうどそうするより良い方法があるのだろうか?

+1

からnthレシピを使うのか?効率またはスペース。 –

+1

はpythonic方法です。 – clwen

答えて

24

だけで何の点では優れて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) 
+2

これは美しいものです。 (+1) – mgilson

関連する問題