理解python语法并减少lambda
我有一个熊猫系列“结构”。它包含字符列表的行理解python语法并减少lambda,python,Python,我有一个熊猫系列“结构”。它包含字符列表的行 structures[0] = ['C', 'H', '[', '#']` 下面这行基本上是试图找到所有行中所有字符的并集 charset = list(reduce(lambda x, y: set(y) | x, structures, set())) 但是,我不能理解语法。|在做什么?为什么要将set()作为一个参数传递给reduce?set(y)| x是set(y)和x的并集 末尾的set()是reduce()的初始值,这是将使用的x的第
structures[0] = ['C', 'H', '[', '#']`
下面这行基本上是试图找到所有行中所有字符的并集
charset = list(reduce(lambda x, y: set(y) | x, structures, set()))
但是,我不能理解语法。|在做什么?为什么要将set()作为一个参数传递给reduce?set(y)| x
是set(y)
和x
的并集
末尾的set()
是reduce()
的初始值,这是将使用的x
的第一个值,以便该函数可以运行。structures
中的第一个值将是y
的第一个值
如果忽略了初始值,例如:
charset = list(reduce(lambda x, y: set(y) | set(x), structures))
如果结构
为空,则会引发:
TypeError: reduce() of empty sequence with no initial value
如果structures
的长度为1,那么reduce
将只返回一个元素,而不是转换为一个集合
通常,
|
是按位OR运算符,但集合会根据其自身的含义覆盖多个运算符。作为将来的参考,该字符称为管道,因此,例如,搜索“python set pipe”会得到一些答案。这与reduce
或lambda
无关。请参阅。@melpomene看起来OP不理解reduce
,lambda
,|
。太宽了。