2024-05-23 16:30:52 发布
网友
这里是新手。在
这段代码在Python2.7中工作,但在3.3中没有
def extractFromZipFiles(zipFiles, files, toPath): extractFunction = lambda fileName:zipFiles.extract(fileName, toPath) map (extractFunction,files) return
没有错误,但是文件没有被提取。不过,当我用for循环替换时,效果很好。在
代码不会出错。在
通常不鼓励使用map来调用函数,但也就是说,它不起作用的原因是python3返回了一个生成器,而不是一个列表,因此直到您对它进行了迭代之后才会调用该函数。为确保调用函数:
list(map(extractFunction,files))
但它正在创建一个未使用的列表。更好的方法是更加明确:
就像头部的情况一样,两条线确实比一条好。在
python3中的map是一个迭代器,而在python2中,它计算一个列表。所以,你要找的是a way to consume the entire iterator。谢天谢地,这里有an ^{} recipe:
map
import collections def extractFromZipFiles(zipFiles, files, toPath): extractFunction = lambda fileName:zipFiles.extract(fileName, toPath) collections.deque(map(extractFunction,files), maxlen=0) return
通常不鼓励使用map来调用函数,但也就是说,它不起作用的原因是python3返回了一个生成器,而不是一个列表,因此直到您对它进行了迭代之后才会调用该函数。为确保调用函数:
但它正在创建一个未使用的列表。更好的方法是更加明确:
^{pr2}$就像头部的情况一样,两条线确实比一条好。在
python3中的} recipe :
map
是一个迭代器,而在python2中,它计算一个列表。所以,你要找的是a way to consume the entire iterator。谢天谢地,这里有an ^{相关问题 更多 >
编程相关推荐