python - 通过 Python 中的集合成员资格对整数进行分组

标签 python list integer set grouping

在 Python 中工作,给定范围 range(s,n) 中的 N 组整数的列表,我如何构建一个列表,根据它们的集合成员资格对所有这些整数进行分组?一个例子真的会帮助我在这里解释:

示例输入(N=2 组):

integerRange = range(0,13)
input = [set([0,1,2,3,7,8,9,12]), set([0,1,2,3,4,5,6,12])]

期望的输出:

out = [set([10,11]), set([4,5,6]), set([7,8,9]), set([0,1,2,3,12])]

因此在输出中,range(s,n) 中的每个整数恰好出现一次,并且有 2^N 个集合。在示例中,out[0] 包含两个集合中都不存在的整数。 out[1] 包含第二组中但不是第一组中的整数。 out[2] 包含第一组中的整数而不是第二组中的整数。最后 out[3] 包含两个集合共有的整数。

对于 2 组,这相当容易……但我对 N 组感到难过。有人知道吗?

最佳答案

我什至不敢考虑这样做的效率,但它非常紧凑:

 out = [set(range(x, y))]
 for in_set in input:
    out_diff = [out_set - in_set for out_set in out]
    out_union = [out_set & in_set for out_set in out]
    out = out_diff + out_union

关于python - 通过 Python 中的集合成员资格对整数进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040919/

相关文章:

python - 如何通过在字符串中使用\u 或\U 转义来正确表示 python3 (3.6.1+) 中的补充 unicode 字符

python - 复制列表时 '[:]' 和 '[::]' 切片的区别?

Python列表在特定条件下选择?

python - 在列表中查找数字并连接 python 中数字之间的所有项目

python - 列表索引必须是整数,而不是 str

c++ - 整数年;即将出现 -2 但我还没有给它赋值

java - 如果包装器使用拆箱,需要什么 intValue() 方法?

python - 贝叶斯优化应用于 CatBoost

python - 如何迭代 Pandas 数据框,并应用阈值函数来删除 x% 为空的列?

python - cv2.imwrite无法写入正确的像素值