簡體   English   中英

itertools 的 islice(count()) vs range()

[英]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)

islicecounter的一種可能組合,不能用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM