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

skd*_*skd 5 python memory zip

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

for lines in zip(*files):
   # do something
Run Code Online (Sandbox Code Playgroud)

这里files是文件的列表,每个file列表列出了lines每个line列表列出string秒.因此,上面的代码应首先解压缩列表files,然后应用该函数zip(),返回每个文件的第一行的元组.问题是如果文件列表的长度是30(例如),这可以正常工作.但是,如果长度较大,例如120,则循环内的代码甚至不会执行一次.

结论是zip()函数返回一个空列表或者*操作符没有完成它的工作.无论哪种方式,我的问题是,如果zip()可以处理(或*可以解包)的参数存在限制,或者它在某种程度上受到我的计算机具有的内存量的限制,因为我无法在Python的文档中找到任何内容.

PS:我正在运行Python 2.4

Bjö*_*lex 9

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