gpt4 book ai didi

python - 为什么我要使用 itertools.islice 而不是普通的列表切片?

转载 作者:太空狗 更新时间:2023-10-29 17:10:19 25 4
gpt4 key购买 nike

在我看来,itertools 模块中的许多函数都有更简单的等价物。例如,据我所知,itertools.islice(range(10),2,5)range(10)[2:5] 做同样的事情> 和 itertools.chain([1,2,3],[4,5,6])[1,2,3]+[4,5 ,6]。主要文档页面提到了速度优势,但除此之外还有选择 itertools 的任何理由吗?

最佳答案

针对您提出的两个示例:

import itertools


data1 = range(10)

# This creates a NEW list
data1[2:5]

# This creates an iterator that iterates over the EXISTING list
itertools.islice(data1, 2, 5)


data2 = [1, 2, 3]
data3 = [4, 5, 6]

# This creates a NEW list
data2 + data3

# This creates an iterator that iterates over the EXISTING lists
itertools.chain(data2, data3)

您想要使用迭代器而不是其他方法的原因有很多。如果列表非常大,创建一个包含大子列表的新列表,或者特别是创建一个包含两个其他列表副本的列表,可能会出现问题。使用 islice()chain() 允许您以您想要的方式遍历列表,而无需使用更多内存或计算来创建新的列出。此外,作为 unutbu提到过,您不能对迭代器使用方括号切片或加法。

我希望这已经足够了;还有很多其他答案和其他资源可以解释为什么迭代器很棒,所以我不想在这里重复所有这些信息。

关于python - 为什么我要使用 itertools.islice 而不是普通的列表切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32172612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com