1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Problem with python code. Combinations of 2-state vectors

  1. Aug 28, 2013 #1
    I am trying to find all combinations of a four element vector that contains only 1's and -1's.
    Ex (1,1,1,1),(-1,1,1,1),...(-1,-1,-1,-1) etc
    My idea to do this is pretty inefficient im sure but I can't think of another way to do it, so here is what I was trying to do.
    I found how many total vectors there would be, then created that many empty lists. I began with vector `A` and then compared this to each list in `vectors`. If `A` matched any of the lists then I randomly changed the sign of an element of `A`, and then again checked the new list `A` against `vectors`. If `A` didn't find a match then it replaced on of the lists in `vectors`, and the while loop was incremented by 1. This should proceed until all possible combinations have been found and printed.
    However my code is just spitting out the first change in `vectors` then continually looping without adding any new `A`'s to `vectors`. Can anyone spot what in my code isn't doing what I intended it to do and/or point me in the right direction? Thanks

    Code (Text):
    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
                vectors[i] = A
                print vectors[i]
                i += 1
        print vectors
    Oh and again I realize this method is incredibly inefficient but as this is a homework assignment I am more concerned with being able to get python to do what I want it to do, then using a bunch of built in functions to do the work for me. Thanks again.
  2. jcsd
  3. Aug 28, 2013 #2
    never mind, figured it out (with help)
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted