Python中如何不修改原集合实现add/update并返回集合传参?
解决Python集合修改后返回新集合的单行写法问题
当然有几种单行写法能满足你的需求,而且完全不会修改原集合:
用集合的并集操作符
|,这是最简洁直观的方式:- 添加单个元素:
foo({an_element} | an_existing_set) - 添加另一个集合或可迭代对象:
foo(another_iterable_set | an_existing_set)
并集操作会直接返回一个全新的集合,原集合不会有任何改动,完全符合你的要求。
- 添加单个元素:
用集合构造器加解包语法:
- 添加单个元素:
foo(set([an_element, *an_existing_set]))
把原集合的元素解包后和新元素一起传入集合构造器,直接生成新集合。这种写法在日常场景下足够好用,只是对超大集合的效率略低于并集操作。
- 添加单个元素:
自定义极简辅助函数(适合多次复用场景):
先定义一次辅助函数:def extend_set(s, *items): new_s = s.copy() new_s.update(items) return new_s之后就能单行调用:
foo(extend_set(an_existing_set, an_element)),如果需要添加多个元素或另一个集合,直接传入对应参数即可,比如extend_set(an_existing_set, elem1, elem2, another_set)。
这些方法生成的都是全新集合,不会修改原集合,刚好可以直接传入递归函数,省去临时变量的繁琐写法。
内容的提问来源于stack exchange,提问作者Mister Nibbles
相关产品推荐
相关产品推荐

