Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3中的flatMap还是bind?_Python_Functional Programming - Fatal编程技术网

Python 3中的flatMap还是bind?

Python 3中的flatMap还是bind?,python,functional-programming,Python,Functional Programming,Python提供了提供映射/过滤器类型功能的列表理解。我可以用这个做一个flatMap aka绑定操作吗?我见过使用itertools或其他附加库的解决方案。我可以用核心Python来做这件事吗 # this [[x,10*x] for x in [1,2,3]] # will result in unflattened [[1, 10], [2, 20], [3, 30]] 只需在列表中为添加另一个。请参阅 itertools包含在stdlib中,因此根据定义它是“核心Python”。@ad

Python提供了提供映射/过滤器类型功能的列表理解。我可以用这个做一个flatMap aka绑定操作吗?我见过使用itertools或其他附加库的解决方案。我可以用核心Python来做这件事吗

# this
[[x,10*x] for x in [1,2,3]]
# will result in unflattened [[1, 10], [2, 20], [3, 30]]
只需在列表中为添加另一个

请参阅


itertools
包含在stdlib中,因此根据定义它是“核心Python”。@adsmith:不,根据定义它是“Python stdlib”。OP的意思是作为一种语言功能,比如
map
filter
“或其他附加库”的列表理解语法表明OP可能没有意识到
itertools
是Python的一部分。只是因为我不想为了纯粹的学术目的而重新发明轮子,
itertools
的解决方案是什么?请参阅。有关说明,列表comp的编写顺序与您为
循环编写
的顺序相同。首先你要对[1,2,3]中的x进行
然后对[x,10*x]中的y进行缩进和
,然后
生成y
或者你喜欢的任何东西。对我来说,这仍然感觉像是向后排序(
对于y in[x,10*x]对于x in[1,2,3]
对我来说从左到右更有意义),但你已经做到了。@adsmith:如果你用
添加过滤,那么从右到左的变体会很尴尬,如果
哦,无论哪种方式都有意义,只要我在看到for循环的时候,我都必须侧着脑袋去看“嵌套”列表理解如下。这很有效。语法似乎不合逻辑。非嵌套理解的源在右边,产生的值在左边。这种嵌套的工作顺序相反,没有明显的逻辑。现在不管优雅与否都可以。
[y for x in [1, 2, 3] for y in [x, 10*x]]
from functools import reduce
def flatMap(array: List[List]): List
    return reduce(list.__add__, array)
    # or return reduce(lambda a,b: a+b, array)