![](/img/trans.png)
[英]What is the point of itertools.count and itertools.islice?
[英]itertools' islice(count()) vs range()
真正的快一個:
我剛剛看到一個教程,他們展示了我們可以像這樣一起使用 itertools 的 islice() 和 count() :
for num in islice(count(), start, stop, step):
print(num)
這樣做而不是使用 range() 有什么好處嗎?
這樣做而不是使用 range() 有什么好處嗎?
在此示例中,沒有優勢, range
將是規范的解決方案。
itertools.islice
如果你有一個任意的迭代器(特別是它沒有隨機訪問行為,比如范圍),它就變得很重要。 假設您打開了一個文件並想忽略前四行,然后每隔一行打印一次。 使用 islice,這變得很簡單:
with open(path, 'r') as f:
for line in islice(f, start=5, stop=None, step=2):
print(line)
islice
與counter
的一種可能組合,不能用range
替換,是如果你有一個非完成循環( stop = None
)。 假設您要打印從三開始的所有素數。
uneven_numbers = islice(count(), start=3, stop=None, step=2):
for num in uneven_numbers:
if is_prime(num):
print(num)
在這里, uneven_numbers
是一個生成器而不是一個列表尤其重要(這肯定會耗盡你的 memory。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.