Python 3.5中zip函数参数超255个报错的优化方法咨询
嘿,这个问题我之前也碰到过!Python对函数调用时显式传入的位置参数个数有个255的限制,你手动写256个sentences[i::256]自然就触发SyntaxError了。
解决方法很简单,不用一个个手动写参数,我们可以用列表推导式生成所有需要的切片,再通过*操作符解包传给zip——这样就绕开了参数个数的限制:
# 替换你原来的代码 sentences_join = [' '.join(x) for x in zip(*[sentences[i::256] for i in range(256)])]
这里的[sentences[i::256] for i in range(256)]会生成包含256个切片的列表,*把这个列表里的每个元素作为独立参数传给zip,完美解决参数过多的问题。
如果你的各个切片长度不一致(比如最后一个切片可能比前面的短),可以用itertools.zip_longest来处理,它会用指定值填充缺失的元素,避免压缩提前终止:
from itertools import zip_longest sentences_join = [' '.join(x) for x in zip_longest(*[sentences[i::256] for i in range(256)], fillvalue='')]
内容的提问来源于stack exchange,提问作者Eduardo Andrade
相关产品推荐
相关产品推荐

