파이썬에서 이해하고있는 것처럼 함수 매개 변수에 변수를 전달하면 이미 원래 변수를 참조합니다. 내 구현에 내가 함수에 전달 변수를 동일시하려고 할 때 빈 목록 결과.참조로 파이썬 호출 문제
#on the main -------------
temp_obj = []
obj = [
{'name':'a1', 'level':0},
{'name':'a2', 'level':0},
{'name':'a3', 'level':1},
{'name':'a4', 'level':1},
{'name':'a5', 'level':2},
{'name':'a6', 'level':2},
]
the_result = myFunction(obj, temp_obj)
print(temp_obj)
#above print would result to an empty list
#this is my problem
#end of main body -------------
def myFunction(obj, new_temp_obj):
inside_list = []
for x in obj[:]:
if x['level'] == 0:
inside_list.append(x)
obj.remove(x) #removing the element that was added to the inside_list
new_temp_obj = obj[:] #copying the remaining element
print(new_temp_obj)
# the above print would result to
#[{'name': 'a3', 'level': 1}, {'name': 'a4', 'level': 1}, {'name': 'a5', 'level': 2}, {'name': 'a6', 'level': 2}]
return inside_list
나는 뭔가를 놓치고 있습니까 아니면 참조로 파이썬 전화의 개념을 오해 않았다
이 내 코드?
'obj [:]'대신'list (obj)'를 사용하십시오. 그것은 더 좋게 본다. – pushkin