私がPythonで理解しているように、関数のパラメータに変数を渡すと、元の変数を参照しています。私の実装では、関数に渡す変数を同じにしようとすると、空のリストが返されました。参照によるPython呼び出し
これは私のコードです:
#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
私は何かが足りないか、私は参照することにより、Pythonのコールの考えを誤解したのですか?
'obj [:]'の代わりに 'list(obj)'を使います。それはよりよく見えます。 – pushkin