Python中是否存在类似函数式更新的集合元素添加方法?
实现函数式风格的集合元素添加
嘿,这个需求我太懂了!你想把集合创建和元素添加写成链式的函数式风格,但直接用set.add()肯定行不通——因为add()是原地修改集合的方法,它的返回值是None,如果直接写myset = set(somelist).add('timestamp'),最后myset会变成None,完全不是你想要的结果。
不过有几种纯函数式的写法能满足你的需求,它们都不会修改原对象,而是返回一个包含新元素的新集合,完美符合函数式编程的无副作用特点:
方法一:用集合并集操作(
|运算符)
这种方式最直观,把原集合和包含新元素的单元素集合做并集,返回新集合:myset = set(somelist) | {'timestamp'}也可以用
union()方法,写法更明确:myset = set(somelist).union({'timestamp'})方法二:用集合解包语法
如果只是添加单个元素,这种写法更简洁,直接把原列表的元素和新元素一起解包到新集合里:myset = {*somelist, 'timestamp'}
这些方法都不需要先创建集合再修改,一步完成集合的创建和元素添加,而且全程没有原地修改的副作用,完全是你想要的函数式风格!
内容的提问来源于stack exchange,提问作者nicolas
相关产品推荐
相关产品推荐

