Уведомления

Группа в Telegram: @pythonsu

#1 Март 24, 2015 12:38:38

vadimkara
Зарегистрирован: 2015-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

цикл for

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)

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


Офлайн

#2 Март 24, 2015 13:19:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

цикл for

>>> 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 .
пример ошибки



Офлайн

#3 Март 25, 2015 02:17:37

vadimkara
Зарегистрирован: 2015-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

цикл for

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

self.grid = np.full((self.column, self.row), Cell(0, 0), dtype=np.object)

Отредактировано vadimkara (Март 25, 2015 02:20:42)

Офлайн

#4 Март 25, 2015 04:52:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10031
Репутация: +  857  -
Профиль   Отправить e-mail  

цикл for

>>> 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
финальная иттерация затирает все последним значением
Не финальная, а каждая итерация переписывает предыдущую, потому что там все элементы массива ссылаются на один и тот же объект.



Офлайн

#5 Март 25, 2015 08:25:58

vadimkara
Зарегистрирован: 2015-03-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

цикл for

мда в голове каша как же я сразу не понял что экземпляр один и тот же спасибо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version