python - using map with None type functions
问题描述
exists in python an equivalent to Haskell's mapM_ function?
example ("print()" is here only a placeholder for every function with Signature: a -> None):
#pseudo code!!!
map (lambda x: print(x), [1,2,3])
like in Haskell:
mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
> mapM_ print [1,2]
> 1
> 2
解决方案
map
只是创建一个惰性迭代器。您必须使用这样的迭代器(例如通过调用list
它)才能收获副作用。由于这会浪费内存(与其他集合构造函数一样),因此推荐的消费配方使用零大小collections.deque
:
from collections import deque
def consume(iterator):
deque(iterator, maxlen=0)
现在,您可以使用内存占用小的迭代器:
lazy = map(print, [1,2,3]) # using lambda here defeats the purpose of functions
consume(lazy)
但是 TMK 与简单循环相比几乎没有优势:
for x in [1, 2, 3]:
print(x)
推荐阅读
- c - 命令行参数第二高的数字 - C 程序
- html - Flexbox wrap 不适用于多个子 div
- python - 具有可变批量大小的 TensorFlow 数据集`from_generator`
- docker - Dockerfile 中的密码
- react-native - 将 Redux Store 连接到组件以使用标记填充地图
- qt - 使用集成的 VTK 连接 QT 中的信号和插槽
- sql - SQL Server 中的逗号分隔值返回重复项
- php - 路由上的 Laravel 默认参数
- python-3.x - 使用 dask.map_blocks 对多维数组进行方位角求和
- c# - .NET Core 配置管理器,读取一个字典,其中一个键里面有一个冒号,给出一个关于值的奇怪错误消息,这是预期的吗?