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

*运算符和zip()函数的Python限制,python,memory,zip,Python,Memory,Zip,我有一个类似于此的Python代码: for lines in zip(*files): # do something 其中文件是文件列表,每个文件是行列表,每个行是字符串列表。因此,上面的代码应该首先解压缩列表文件,然后应用函数zip(),返回每个文件第一行的元组。问题是,如果文件列表的长度是30(例如),那么这就可以正常工作。然而,如果长度更大,例如120,循环中的代码甚至不会执行一次 结论是,zip()函数正在返回一个空列表,或者*操作符没有完成它的工作。不管怎样,我的问题是zip

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

for lines in zip(*files):
   # do something
其中
文件
是文件列表,每个
文件
列表,每个
字符串
列表。因此,上面的代码应该首先解压缩列表
文件
,然后应用函数
zip()
,返回每个文件第一行的元组。问题是,如果文件列表的长度是30(例如),那么这就可以正常工作。然而,如果长度更大,例如120,循环中的代码甚至不会执行一次

结论是,
zip()
函数正在返回一个空列表,或者
*
操作符没有完成它的工作。不管怎样,我的问题是
zip()
可以处理的参数(或者
*
可以解包)是否有限制,或者是否受到计算机内存量的限制,因为我在Python文档中找不到任何东西


PS:我正在运行Python2.4

如果其中一个文件为空,
zip
将返回一个空列表。从Python2.6开始,您可以使用来处理这个问题。在旧版本中,您可以使用@Sven Marnach提供的
map(无,*文件)

您确定每个文件至少包含一行吗?如果没有,可以使用@Space\u c0w0y:
izip\u longest()
在Python2.4上不可用,但在其他方面,您可能已经锁定了它。在Python2.4上,您可以使用神秘的
映射(无,*文件)
而不是
izip_longest()
。请提供一个
文件
结构的简短示例。请包括
zip(*简短示例)
的输出。您冗长的描述没有实际显示
文件
@Space\u C0wb0y中的前几个项目有用是的,这就是问题所在。第二个列表中有一个文件为空,
zip()
将输出截断为最小列表的长度。因此,它返回的是一个空列表。@S.Lott我认为实际结构会更加混乱,但我会提供一个简短的示例:
files=[[[elem11,elem12,elem13][elem21 elem22 elem23]]]