- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
什么时候最好使用zip
而不是 itertools.izip
?
最佳答案
zip
一次计算所有列表,izip
仅在请求时计算元素。
一个重要的区别是'zip'返回一个实际的列表,'izip'返回一个'izip object',它不是一个列表并且不支持特定于列表的功能(例如索引):
>>> l1 = [1, 2, 3, 4, 5, 6]
>>> l2 = [2, 3, 4, 5, 6, 7]
>>> z = zip(l1, l2)
>>> iz = izip(l1, l2)
>>> isinstance(zip(l1, l2), list)
True
>>> isinstance(izip(l1, l2), list)
False
>>> z[::2] #Get odd places
[(1, 2), (3, 4), (5, 6)]
>>> iz[::2] #Same with izip
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'itertools.izip' object is unsubscriptable
所以,如果您需要一个列表(不是类似列表的对象),只需使用 'zip'。
除此之外,“izip”对于节省内存或周期很有用。
例如以下代码可能会在几个周期后退出,因此无需计算组合列表的所有项目:
lst_a = ... #list with very large number of items
lst_b = ... #list with very large number of items
#At each cycle, the next couple is provided
for a, b in izip(lst_a, lst_b):
if a == b:
break
print a
使用 zip
会在进入循环之前计算出 all (a, b)
对。
此外,如果 lst_a
和 lst_b
非常大(例如数百万条记录),zip(a, b)
将构建第三个双空格列表。
但如果你的列表很小,也许 zip
更快。
关于python-2.7 - 什么时候使用 zip 而不是 izip 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989763/
我有一个 list lg发电机数量,lg = [g1, g2, ..., gn] 。这些生成器被合并为一个生成器 izip , G = izip(*lg) 。 lg 中的发电机之一(例如 g1 )通常
我正在尝试理解 izip 的“等效代码”来自文档。 def izip(*iterables): # izip('ABCD', 'xy') --> Ax By iterators = m
我有嵌套的函数调用,其中还应用了多处理。izip 或 repeat 或某些东西似乎在复制对象而不是通过引用传递,同时还进行了一些打包和解包。 这是按调用顺序排列的结构: def main():
这个问题在这里已经有了答案: importing izip from itertools module gives NameError in Python 3.x (3 个答案) 关闭 4 年前。
我有以下数据结构:{'one':['a','b','c'],'two':['q','w','e'], '三':['t','u','y'],...}。因此,字典有不同的键数。由字典的键选择的每个数组都有
为了更好地理解 Python 的生成器,我尝试在 itertools 模块中实现功能,但遇到了 izip 的问题: def izip(*iterables): its = tuple(iter
我有一个算法,可以迭代矩阵的所有非零值,如下所示: for row, col, val in itertools.izip(matrix.row, matrix.col, matrix.data):
documentation写的是: def izip(*iterables): # izip('ABCD', 'xy') --> Ax By iterators = map(iter,
我知道 izip 可以一次读取两个文件,但我不知道如何同时迭代这两个文件(或者这样做是否合理)。这是我的代码的第一步,该代码应该逐行读取文档并返回文档是否具有相同的行数: from sys impor
iZip 应用程序如何与 DropBox 应用程序交互,因为它们都是沙盒的? 据我所知,我可以从 iZip 中完全访问 DropBox,但我听说 iOS 上的进程间通信受到限制。 iZip 是否使用
我的问题只是为了学习目的,而且只针对 python3.x。在现实生活中,我会使用 zip,因为 python3 zip 与 python2 izip 做同样的工作(即返回生成器,而不是真实的东西)。
由于没有更好的名字,我想用 Python 做一个“izip_sorted”。该函数的输入是许多可迭代对象,每个迭代对象都已排序。输出是一个带有排序输出的可迭代对象。 print([x for x in
我编写了一个名为 size_subsets 的函数,当传递城市(数字)列表时,该函数返回特定大小的所有子集。但是,使用 izip() 而不是两个 for-yield block 重新声明该函数会完全破
我想在 Python 中迭代 + 枚举两个列表。下面的代码看起来很难看。有没有更好的解决方案? for id, elements in enumerate(itertools.izip(as, bs)
有谁知道使用 izip 的 python for 循环的 java 或 groovy 等价物? python 例子: for item_one, item_two in izip(list_one,
>>> itertools.izip('ABCD', 'xy') Traceback (most recent call last): File "", line 1, in itert
在我的项目中,我尝试导入 izip 库,但不起作用 from itertools import izip from random import normalvariate, random fro
我正在阅读以下主题:Make dictionary from list with python 最初的问题是将元组 (1,'a',2,'b',3,'c') 转换为字典 {1: 'a', 2:“b”,3
什么时候最好使用zip而不是 itertools.izip ? 最佳答案 zip 一次计算所有列表,izip 仅在请求时计算元素。 一个重要的区别是'zip'返回一个实际的列表,'izip'返回一个'
我正在尝试像这样导入 izip 模块: from itertools import izip 但是在最近从 Python 2.7 切换到 3 之后 - 它似乎不起作用。 我正在尝试写入 csv 文件:
我是一名优秀的程序员,十分优秀!