Проблема с break в for-цикле
Я перебираю список, который является инвентарем в моей игре. Каждый слот - тоже список, в который могут стаковаться одинаковые предметы. При выполнении функции, в которой добавляется предмет, происходит перебирание цикла, и если слот пустой, то в него просто добавляется предмет из обЪекта, с которого он взят (куст, дерево и т. п.). После этого я использую оператор break.
if pg.sprite.spritecollide(player, natural_objects, False): # Сбор с природных обЪектов
obj = pg.sprite.spritecollide(player, natural_objects, False)[0]
if len(obj.items) > 0: # Если обЪект не пустой
for slot in inventory.slots:
if len(slot) == 0:
item = obj.items.pop(0)
item.kill()
slot.append(item)
inventory.slot_alignment() # Обновление позиций предметов, которые должны рисоваться
print(inventory.slots.index(slot))
break
По идее после первого попавшегося пустого слота, цикл должен завершиться, но если вывести содержимое инвентаря получим:
for slot in inventory.slots:
print(slot)
[<Item Sprite(in 0 groups)>]
[<Item Sprite(in 0 groups)>]
[<Item Sprite(in 0 groups)>]
...
Весь инвентарь заполняется одним предметом. Вот от куда вызывается функция сбора:
if e.type == pg.KEYDOWN:
if e.key == pg.K_e:
# Добавление предметов в инвентарь
collecting_item(inventory, player, natural_objects, drop_items)
Я использую pygame.
В чем моя ошибка?