Я пытаюсь найти все комбинации четырехэлементного вектора, который содержит только 1 и -1. Ex (1,1,1,1), (- 1,1,1,1), ... (- 1, -1, -1, -1) и т. Д. Моя идея сделать это довольно неэффективно im конечно, но я не могу придумать другого способа сделать это, поэтому вот что я пытался сделать. Я нашел, сколько всего векторов было бы, а затем создало много пустых списков. Я начал с вектора A
, а затем сравнил его с каждым списком в vectors
. Если A
соответствовал любому из списков, то я случайно изменил знак элемента A
, а затем снова проверил новый список A
против vectors
. Если A
не нашел совпадения, то он заменил на списки в vectors
, а цикл while был увеличен на 1. Это должно продолжаться до тех пор, пока не будут найдены и распечатаны все возможные комбинации. Однако мой код просто выплевывает первое изменение в vectors
, затем непрерывно зацикливается, не добавляя никаких новых A
в vectors
. Может ли кто-нибудь определить, что в моем коде не делает то, что я намеревался сделать, и/или указать мне в правильном направлении? БлагодаряПопытка найти все комбинации вектора 2-состояния (в python)
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
О, и снова я понимаю, этот метод является невероятно неэффективным, но, как это домашнее задание я больше озабочен возможность получить питона делать то, что я хочу, чтобы это сделать, то, используя кучу встроенных в функциях для работы для меня. Еще раз спасибо.
да! вот и все! это была единственная проблема, и теперь она работает. Спасибо большое – user2727518