У нас есть следующий список для ввода:
[[-5, -1], [1, -5], [5, -1]]
Я создал функцию, которая принимает clist
в качестве списка и number
случайное число, которое я хочу удалить из списка.
Функция должна удалить все вложенные списки, содержащие данный number
, и удалить отрицательный number
во вложенном списке
def reduce(self, clist, number):
self.temp = list(clist)
# remove the nested list that contain the given number
for item in clist:
if number in item:
self.temp.remove(item)
# remove the negative number within the nested list
for obj in self.temp:
try:
obj.remove(-number)
except:
pass
return self.temp
Давайте выберем 1
как number
и запустите код.
Первый цикл for
удалит все вложенные списки, содержащие данное число, и получит следующее:
self.temp = [[-5, -1], [5, -1]]
clist = [[-5, -1], [1, -5], [5, -1]]
Второй цикл for
должен удалить все отрицательные number
во вложенных списках, но мы получаем следующее:
self.temp = [[-5], [5]]
clist = [[-5], [1, -5], [5]]
Чего я не понимаю, так это то, почему clist
затрагивается, когда я работаю над вторым for
цикл, особенно когда я работаю над списком self.temp
?Это должно быть без ссылки на оригинальный список, но я что-то упустил.Помогите?