에서 함수 호출에서 변경되지 않습니다 목록을 복사 (this 참조)파이썬
def removeFromList(elementsToRemove):
def closure(list):
for element in elementsToRemove:
if list[0] != element:
return
else:
list.pop(0)
return closure
def func(listOfLists):
result = []
for i, thisList in enumerate(listOfLists):
result.append(thisList)
map(removeFromList(thisList), listOfLists[i+1:])
return result
을 내가 인수, 로 전달하려는 목록을 가지고 있지만, 이 목록을 그대로 유지하고 싶습니다.
my_list = [[1], [1, 2], [1, 2, 3]]
print my_list
#[[1], [1, 2], [1, 2, 3]]
copy_my_list = list (my_list)
#This also fails
#copy_my_list = my_list [:]
print id (my_list) == id (copy_my_list)
#False
print func (copy_my_list)
#[[1], [2], [3]]
print my_list
#[[1], [2], [3]]
하지만 내 원래의 목록을 변경하지 : 내가 시도하는 것입니다. 아이디어가 있으십니까?
감사합니다. 왜이 일이 일어 났는지 말해 줄 수 있어요? –
@ pushpen.paul 왜냐하면'[:]'와'list()'는리스트의 얕은 사본만을 생성하고 내부리스트는 여전히 같은 객체이기 때문입니다. 그리고'my_list' 또는'new_list'에서 그것들을 변경할 수 있습니다. –