Python 异或等于零的子列表数

Python 异或等于零的子列表数,python,Python,我有一个整数列表,我想知道这个列表中有多少子列表使得子列表中元素的XOR在小于On*n时间内等于零,最好是在On时间内。 例如: 列表A=[2,5,7,1,3] 因此,此列表的子列表为: [2] [2,5] [2,5,7] [2,5,7,1] [2,5,7,1,3] [5] [5,7] [5,7,1] [5,7,1,3] [7] [7,1] [7,1,3] [1] [1,3] [3] 在这些子列表中,所需的是:[2,5,7]和[5,7,1,3],因为2^5^7==0和5^7^1^3==0使用

我有一个整数列表,我想知道这个列表中有多少子列表使得子列表中元素的XOR在小于On*n时间内等于零,最好是在On时间内。 例如: 列表A=[2,5,7,1,3] 因此,此列表的子列表为:

[2] [2,5] [2,5,7] [2,5,7,1] [2,5,7,1,3]
[5] [5,7] [5,7,1] [5,7,1,3]
[7] [7,1] [7,1,3] 
[1] [1,3]
[3]
在这些子列表中,所需的是:[2,5,7]和[5,7,1,3],因为2^5^7==0和5^7^1^3==0

使用zip查找所有可能的子列表,然后使用reduce查找子列表中所有元素的异或值,并过滤值为0的元素

>>> from operator import xor
>>> from functools import reduce
>>> 
>>> A = [2,5,7,1,3]
>>> [sl for n in range(len(A)) for sl in zip(*(A[i:] for i in range(n+1))) if not reduce(xor, sl)]
[(2, 5, 7), (5, 7, 1, 3)]

但我们的结果不需要2,1,3。你所做的基本上是为了子序列,而不是子列表。@SomShekharMukherjee。很抱歉没有正确阅读你的描述。现在应该修复所有可能的子列表都已经是2^n@Sunitha它仍然没有修复,将A更改为[2,5,7],它返回一个空列表,应该是[2,5,7]@SomShekharMukherjee。修正了。。再试试这个问题,我想你需要从另一个角度来解决