2012-08-17 17 views
17

Bazen yinelenebilir bir abone olmayabilir.Abartısız bir yinelenebilir döngüden nth eleman almanın daha iyi yolları

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

Python Tabii 'itertools.permutations' object is not subscriptable

bir inci elemanını almak için next()n tarafından sürelerini gerçekleştirebileceği şikayet: itertools.permutations dönüş de. Sadece merak etmek için daha iyi yollar var mı?

+1

iyi gelen nth tarifi kullanabilirsiniz? verimlilik veya alan. –

+1

pythonik bir yol. – clwen

cevap

24

Sadece ne açısından 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

Bu güzel bir şey. (1) – mgilson

İlgili konular