Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何按每对子集仅不同一个元素的顺序打印功率集?_Python_Powerset - Fatal编程技术网

Python 如何按每对子集仅不同一个元素的顺序打印功率集?

Python 如何按每对子集仅不同一个元素的顺序打印功率集?,python,powerset,Python,Powerset,我想以这样的顺序打印幂集:相邻的子集只相差一个元素 例如: Input: S= {1,2,3,4} 输出将按如下方式打印: {"",{1},{2}, {3}, {4} ,{4,1}, {4,2} ,{4,3},{3,1}...} 或 生成前2^N,其中N=len(S)。使用代码位为该集合选择元素 S = [1, 2, 3, 4] for i in range(2**len(S)): gray_code = i ^ (i >> 1) subset = [S[j]

我想以这样的顺序打印幂集:相邻的子集只相差一个元素

例如:

Input: S= {1,2,3,4}
输出将按如下方式打印:

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

生成前2^N,其中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)

我认为输入的顺序并不重要。
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]