我正在尝试查找仅包含 1 和 -1 的四元素向量的所有组合。例如 (1,1,1,1),(-1,1,1,1),...(-1,-1,-1,-1) 等我想不出另一种方法来做到这一点,所以这就是我想要做的。我发现会有多少个总向量,然后创建了那么多空列表。我从 vector 开始A
,然后将其与vectors
. 如果A
匹配任何列表,则我随机更改 元素的符号A
,然后再次检查新列表A
。vectors
如果A
没有找到匹配项,则替换列表中的vectors
,并且while循环增加1。这应该继续进行,直到找到并打印所有可能的组合。但是,我的代码只是吐出第一个更改,vectors
然后不断循环而不添加任何新A
的vectors
. 谁能发现我的代码中没有做我打算做的事情和/或指出我正确的方向?谢谢
import random
numvec = 2**4 # number of macrostates for a 4 component 2-state system
vectors = [[0,0,0,0] for i in range(numvec)] #initializing the numvec vectors
A = [1,1,1,1]
i = 0
while i < 16:
if any(x == A for x in vectors):
y = random.randrange(0, 3)
A[y] = A[y] * -1
else:
vectors[i] = A
print vectors[i]
i += 1
print vectors
哦,我再一次意识到这种方法效率非常低,但由于这是一个家庭作业,我更关心能够让 python 做我想做的事情,然后使用一堆内置函数来为我完成工作. 再次感谢。