Привет, сообщество,
SourcePoints = self.SourcePoints
TargetPoints = self.TargetPoints
print("SourcePoints: ", self.SourcePoints)
print("TargetPoints: ", self.TargetPoints)
for point in SourcePoints:
for i in range(len(point)):
point[i] = Origin[i] + point[i] * Spacing[i]
for point in TargetPoints:
for i in range(len(point)):
point[i] = Origin[i] + point[i] * Spacing[i]
print("SourcePoints: ", self.SourcePoints)
print("TargetPoints: ", self.TargetPoints)
Что вам, вероятно, нужно знать для контекста: - self.SourcePoints / self.TargetPoints инициализируется после создания экземпляра класса (наследующего код). Нет другого раздела, где можно манипулировать списками. - self.SourcePoints / self.TargetPoints - это списки списков - вырезанный код является частью функции внутри класса
Я далеко не эксперт в программировании, поэтому я могу наблюдать здесь кое-что очевидное, но я Я не могу его увидеть, и это сводит меня с ума, потому что две команды печати не имеют одинаковых результатов ... и сценарий вылетает (из c), потому что self.SourcePoints / self.TargetPoints "неправильные" в следующей итерации.
Итак, теперь вы можете сказать, что, написав
SourcePoints = self.SourcePoints
, вы не делаете копию, а создаете ссылку на список, поэтому естественно исходный список изменяется во время циклов for. Для меня это имеет смысл, поэтому я попробовал
SourcePoints = copy.copy(self.SourcePoints)
и
SourcePoints = self.SourcePoints.copy()
, которые ничего не изменили.
Затем я сказал себе, может быть, это потому, что идентичного названия списков. Итак, сценарий думает, что если я возьму переменную SourcePoints в функции класса, я хочу изменить переменную self.SourcePoints. Итак, я поменял все на
srcPoints = self.SourcePoints.copy()
И это все еще не работает ... Я действительно понятия не имею, что происходит, и это сводит меня с ума. К счастью, у меня есть обход для сценария, но я все еще пытаюсь понять, почему это происходит. Мне совершенно не понятно, почему две команды печати не имеют идентичного вывода. Тем не менее, компьютер просто делает то, что я ему говорю.
Может кто-нибудь просветить меня?
Привет, Пустота