2016-07-20 7 views
0

Я начинаю изучать питон. У меня проблема с этим циклом.Python странное поведение с циклом

Я пытаюсь найти цикл поиска для ПК, чтобы отслеживать ход, сделанный игроком (человеком), и предвидеть следующий ход в игре с tic tac toe.

В результате, я создаю для цикла, чтобы добавить шаги, сделанные игрок (человек), но что-то странное происходят

lst = [ [ "X",[], [] ], 
    [ [], "X", [] ], 
    [ [], "X", [] ] ] 
    temp_lst = [] 
    for i in lst: 
     lst_1 = [] 
     for j in i: 
      if j == "X": 
      lst_1.append(lst.index(i)) 
      print(lst.index(i)) 
      lst_1.append(i.index(j)) 
      print(i.index(j)) 
     temp_lst.append(lst_1) 

    print (temp_lst) 

Результатов на моем IDLE является:

0 
    0 
    1 
    1 
    1 
    1 
    [[0, 0], [1, 1], [1, 1]] 

Примечания что позиция «X» IN MIDDLE и «X» в последнем списке такая же, какой не было бы. Это моя проблема. Обратите внимание, что при изменении LST к:

 lst = [ [ "X",[], [] ], 
    [ [], "X", [] ], 
    [ [], [], "X" ] ]  

    result: [[0, 0], [1, 1], [2, 2]] 

Результат от питона показывает правильное положение последнего «X», а в предыдущем он дал сильную позицию для последнего «X»

Пожалуйста, помогите поблагодарить вас

+0

Вашего ожидаемого результата для последней итерации [1,2]? –

+0

Неверный отступ вашего кода. Это важно в python и изменяет то, что выводит ваш код. Вы должны исправить это. – zezollo

ответ

0

Как Jeff Meatball Yang сказал, что индекс работает так, что он находит первое появление в списке. Я хотел бы сделать что-то вроде этого

lst = [["X", [], []], 
    [[], "X", []], 
    [[], "X", []]] 
temp_lst = [] 

for i in range(len(lst)): 
    lst_1 = [] 
    for j in range(len(lst[i])): 
     if lst[i][j] == "X": 
      lst_1.append(i) 
      print(i) 
      lst_1.append(j) 
      print(j) 
    temp_lst.append(lst_1) 

print (temp_lst) 

Результата этого кода: [[0, 0], [1, 1], [2, 1]]

+0

Спасибо вам большое – user6277136

1

Во внешнем цикле, на последней итерации, вы проверяете индекс литерального массива: [[],["X"],[]]. Таким образом, Python находит первое по принципу равенства: это то же самое, что и второй элемент.

+0

большое спасибо – user6277136