python - 如何打印幂集以使每对子集仅一个元素不同?

标签 python powerset

我想按照相邻子集仅相差一个元素的顺序打印幂集。

例如:

Input: S= {1,2,3,4}

输出将像这样打印:

{"",{1},{2}, {3}, {4} ,{4,1}, {4,2} ,{4,3},{3,1}...}

{"", {1}, {1,2}, {2}, {2,3}, ...}

最佳答案

生成前2^N gray codes ,其中 N = len(S)。使用代码位来选择该集合的元素。

S = [1, 2, 3, 4]

for i in range(2**len(S)):
    gray_code = i ^ (i >> 1)
    subset = [S[j] for j in range(len(S)) if gray_code & (1 << j) ]
    print(subset)

输出:

[]
[1]
[1, 2]
[2]
[2, 3]
[1, 2, 3]
[1, 3]
[3]
[3, 4]
[1, 3, 4]
[1, 2, 3, 4]
[2, 3, 4]
[2, 4]
[1, 2, 4]
[1, 4]
[4]

关于python - 如何打印幂集以使每对子集仅一个元素不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52864291/

相关文章:

python - 使用 BeautifulSoup 抓取具有不变 URL 的多个页面

python - 根据条件合并pandas数据框

python - 请求的 session 在请求完成之前被删除。例如,用户可能已在并发请求中注销

c++ - 如何使用迭代器打印一组集合中的内容?

python - 如何获取集合的所有子集? (动力装置)

python - Pandas 创建幂集和平均数据

python - pickle 后日期时间戳是否更新?

Python:html scraper,用于从具有相同基本 url 的多个页面中提取某些单词之间的信息。这是我到目前为止所拥有的

c - 数组的整数子集的总和,获取所有结果而不是第一个

haskell - Haskell中具有列表理解的集合的Powerset