Почему мой оригинальный вложенный список изменяется при копировании? - PullRequest
1 голос
/ 12 ноября 2019

Я пытаюсь создать функцию с заданным вложенным списком и удаляет все вхождения элементов в to_eliminate. Я понимаю, почему у меня возникла бы эта проблема, если бы я сделал new_list = input_list, но я делаю new_list = input_list [:]. Я даже проверил их идентификаторы, и они определенно отличаются. Я не хочу изменять свой оригинальный список.

Both segments of code do not work.
When I return both input_list and new_list, I get the same result. I don't understand why as I copied the original list, and they are two different objects.

1 Ответ

1 голос
/ 12 ноября 2019

Это должно работать, если вам это нужно, сообщите мне, и я обновлю ответ, я был не уверен, основываясь на вашем вопросе:

input_list = [[1,2,3,4,5,6,7,8,9,0],[3,5,7,9,0],[1,2,3,4,5]]
remove_list = [1,4,7,0]

def eliminate(input_list, remove_list):
  new_list=[]
  for item in input_list:
    new_list.append(list(set(item) - set(remove_list)))
  return new_list

new_list = eliminate(input_list, remove_list)

new_list
[[2, 3, 5, 6, 8, 9], [9, 3, 5], [2, 3, 5]]
...