我正在尋找迭代第一個n
迭代項的pythonic方式(upd:不是在常見情況下的列表,因爲列表中的東西是微不足道的),而且儘快做到這一點非常重要。這就是我現在的做法:快速迭代python中的迭代(不是列表)的前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)
與第一種方法相比,它運行速度是否足夠快? 有沒有更簡單的方法來做到這一點?
只有這樣,才能回答「不夠快」是標杆它自己。 – 2010-04-23 21:51:15
另請參閱:http://stackoverflow.com/questions/2688079/how-to-iterate-over-the-first-n-elements-of-a-list – outis 2010-04-23 21:57:03
爲什麼「相當重要的做到這一點儘快可能」?你可以用pstats結果來證明這是一個真實的用例嗎?我懷疑你用'islice'的解決方案實際上會證明在性能方面是最合理的解決方案,但是我們當然不知道沒有時間。 – 2010-04-23 22:02:46