我正在尝试使用map
在Python3.这是我正在使用的一些代码:
import csv
data = [
[1],
[2],
[3]
]
with open("output.csv", "w") as f:
writer = csv.writer(f)
map(writer.writerow, data)
然而,自从map
在Python3中返回一个迭代器,此代码在Python3中不起作用(但在Python2中工作正常,因为该版本map
总是返回一个list
)
我当前的解决方案是添加一个list
对迭代器的函数调用以强制计算。但这看起来很奇怪(我不关心返回值,为什么要把迭代器转换成列表?)
还有更好的解决方案吗?
Using map
即使在 Python2.x 中,当您对返回值不感兴趣时,它的副作用(例如函数调用)也是不可取的。如果函数返回None
,但重复一百万次 - 你会建立一个一百万次的列表None
只是丢弃它。正确的方法是使用 for 循环并调用:
for row in data:
writer.writerow(row)
或作为csv
模块允许,使用:
writer.writerows(data)
如果由于某种原因你真的真的想要 to use map
,那么您可以使用consume
来自 itertools 的配方并生成零长度双端队列,例如:
from collections import deque
deque(map(writer.writerow, data), maxlen=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)