Python运算符和zip()函数的Python限制

时间:2011-03-03 10:44:53

标签: python memory zip

我有一个类似于这个的Python代码:

for lines in zip(*files):
   # do something

其中files是文件列表,每个file都是lines的列表,每个line都是string的列表。因此,上面的代码应首先解压缩列表files,然后应用函数zip(),返回每个文件的第一行的元组。问题是这很好用,如果文件列表的长度是30(例如)。但是,如果长度较大,例如120,则循环内的代码甚至不会执行一次。

结论是zip()函数返回空列表或*运算符未执行其工作。无论哪种方式,我的问题是zip()可以处理的参数是否存在限制(或*可以解包),或者它在某种程度上受到我的计算机具有的内存量的限制,因为我没有能够在Python的文档中找到任何东西。

PS:我正在运行Python 2.4

1 个答案:

答案 0 :(得分:9)

如果其中一个文件为空,zip将返回一个空列表。从Python 2.6开始,您可以使用itertools.izip_longest来处理它。在旧版本中,您可以使用map(None, *files),由@Sven Marnach提供。