Найти - Пользователи
Полная версия: цикл for
Начало » Python для новичков » цикл for
1
vadimkara
self.grid_index = [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9), (0, 10), (0, 11)...]
for (x,y) in self.grid_index:
print(x,y)
self.grid[x][y].coordinates = (x, y)
print(conway.grid[1][1].coordinates, conway.grid[1][2].coordinates, conway.grid[1][3].coordinates, conway.grid[1][4].coordinates)
(39, 39) (39, 39) (39, 39) (39, 39)

Но присваивает он в конце концов все объектам только последнее значение не пойму в чем бок.


py.user.next
>>> lst = [(0, 0), (1, 1)]
>>> 
>>> t = [[None, None], [None, None]]
>>> 
>>> for (x, y) in lst:
...     t[x][y] = (x, y)
... 
>>> t
[[(0, 0), None], [None, (1, 1)]]
>>>

vadimkara
не пойму в чем бок
Неправильно создаётся self.grid .
пример ошибки
vadimkara
slef.grid это нумпай арраи с экземплярами класса внутри, во время иттерации, принтом видно что атрибут экземпляра меняется, но финальная иттерация затирает все последним значением.

self.grid = np.full((self.column, self.row), Cell(0, 0), dtype=np.object)
py.user.next
>>> import numpy as np
>>> 
>>> class A(int):
...     i = 1
... 
>>> t = np.full((2, 2), A, dtype=np.object)
>>> t
array([[<class '__main__.A'>, <class '__main__.A'>],
       [<class '__main__.A'>, <class '__main__.A'>]], dtype=object)
>>> t[0][0].i, t[0][1].i
(1, 1)
>>> t[0][0].i = 2
>>> t[0][0].i, t[0][1].i
(2, 2)
>>>

vadimkara
финальная иттерация затирает все последним значением
Не финальная, а каждая итерация переписывает предыдущую, потому что там все элементы массива ссылаются на один и тот же объект.
vadimkara
мда в голове каша как же я сразу не понял что экземпляр один и тот же спасибо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB