Im пытается создать набор, основанный на другом наборе, и исключить только один элемент ... (сделать цикл for внутри другого для цикла с объектом, находящимся внутри набора , но не перебирать с собой на втором цикле)Сделайте копию набора и исключите один элемент
Код:
for animal in self.animals:
self.exclude_animal = set((animal,))
self.new_animals = set(self.animals)
self.new_animals.discard(self.exclude_animal) # parameters for a set needs to be a set?
for other_animal in (self.new_animals):
if animal.pos[0] == other_animal.pos[0]:
if animal.pos[1] == other_animal.pos[1]:
self.animals_to_die.add(animal)
print other_animal
print animal
self.animals_to_die.add(other_animal)
точка, мой оператор печати возвращает объект id(x)
, так что я знаю, что они такие же объект, но они не должны быть , Я отказываюсь от этого набора new_animals
.
Любое понимание того, почему это не исключает товар?
Возможно, 'discard' возвращает новый набор, а не модифицирует старый? Наборы могут быть неизменными, но я не могу вспомнить. –
@WaleedKhan: 'set.discard()' работает на месте. 'set()' изменен, 'frozenset()' не является и не имеет метода '.discard()'. –