理解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
|
。太宽了。