2013-09-23 5 views
0

Я пытаюсь получить индекс элементов слева, справа, снизу и верхней части двоичного целого в сетке 4x4. С тем, что я делаю сейчас, похоже, не получается правильный индекс значения.Как получить индекс элемента

 if self.data[index] == 1: 
      self.data[index] = 0 
       if self.data.index(self.data[index]) - 1 >= 0: 
        print("Left toggled") 
        if self.data[index - 1] == 1: 
         self.data[index - 1] = 0 
        else: 
         self.data[index - 1] = 1 

В настоящее время я пытаюсь с битовым массивом 010011100100, который возвращает -1, если index = 5 в приведенном выше примере кода, когда оно должно быть возвращение 4 как 5-1 = 4.

Я предполагаю, что мое заявление if if self.data.index(self.data[index]) - 1 >= 0: неверно, но я не уверен в синтаксисе того, что я пытаюсь сопровождать.

ответ

4

Давайте пошагово свой код и посмотреть, что происходит ...

#We'll fake these in so the code makes sence... 
#self.data must be an array as you can't reassign as you are doing later 
self.data = list("010011100100") 
index = 5 

if self.data[index] == 1:  # Triggered, as self.data[:5] is "010011" 
    self.data[index] = 0  # AHA self.data is now changed to "010010..."!!! 
     if self.data.index(self.data[index]) - 1 >= 0: 
      #Trimmed 

Во второй последней строке вы получаете self.data[index] который сейчас 0, как мы изменили его линию раньше.

Но также помните, что Array.index() возвращает первый экземпляр этого элемента в массиве. Таким образом, self.data.index(0) возвращает первый экземпляр 0, который является первым или более точным, нулевым элементом. Таким образом, self.data.index(0) дает 0 и 0-1 ... -1.

Что касается вашего кода должен быть, это более жесткий ответ.

Я думаю, что ваш условный может быть просто:

width = 4 # For a 4x4 grid, defined much earlier. 
height = 4 # For a 4x4 grid, defined much earlier. 

... 

if index%width == 0: 
    print "we are on the left edge" 
if index%width == width - 1: 
    print "we are on the right edge" 
if index%height == 0: 
    print "we are on the top edge" 
if index%height == height - 1: 
    print "we are on the bottom edge" 
+0

Да, это о том, насколько я понял это. То, что я пытаюсь по существу сделать, это изменить четвертый индекс соответственно вместо того, чтобы делать математику по значениям внутри индексов. – Bob

+0

@BobDunakey Четвертый индекс, вы имеете в виду четвертый? –

+0

@LegoStromtrooper да, опечатка. – Bob

Смежные вопросы