मैं एक iterable (upd के पहले n
से अधिक आइटम पुनरावृत्ति की एक pythonic रास्ता तलाश कर रहा हूँ से अधिक तेजी से बार-बार दोहराना सूचियों के लिए चीजें छोटी हैं), और जितनी जल्दी हो सके इसे करने के लिए यह काफी महत्वपूर्ण है। इस तरह मैं इसे अब करता हूं:अजगर में एक iterable (नहीं एक सूची) के पहले n आइटम
count = 0
for item in iterable:
do_something(item)
count += 1
if count >= n: break
मुझे साफ नहीं लगता है। ऐसा करने का एक और तरीका है:
for item in itertools.islice(iterable, n):
do_something(item)
यह अच्छा लग रहा है, सवाल यह काफी तेजी से कुछ जनरेटर (रों) के साथ उपयोग करने के लिए है? उदाहरण के लिए:
pair_generator = lambda iterable: itertools.izip(*[iter(iterable)]*2)
for item in itertools.islice(pair_generator(iterable), n):
so_something(item)
क्या यह पहली विधि की तुलना में तेज़ी से दौड़ जाएगा? क्या ऐसा करने का कोई आसान तरीका है?
एक ही तरीका है जवाब देने के लिए "काफी तेजी से" यह अपने आप बेंचमार्क है। –
यह भी देखें: http://stackoverflow.com/questions/2688079/how-to-iterate-over-the-first-n-elements-of-a-list – outis
ऐसा क्यों है "इसे जितना तेज़ करना है मुमकिन"? क्या आप इसे यथार्थवादी उपयोग के मामले के लिए pstats परिणामों के साथ औचित्य साबित कर सकते हैं? मुझे संदेह है कि 'islice' के साथ आपका समाधान वास्तव में सर्वोत्तम उचित समाधान प्रदर्शन के अनुसार साबित होगा, लेकिन निश्चित रूप से हम समय के बिना नहीं जानते हैं। –