+ 2
Can anybody tell Me why output Code Is 7
There is the code def f(values,arr=[]): for i in values: if i%2==0: arr.append(i) print(arr) return len(arr) print(f(range(4))+f(range(5))) Can anybody tell me, what i dont understand why output code is 7, because after all iterations we have array arr=[0,2,0,2,4] What i do wrong? https://code.sololearn.com/cWJuOJUxGSA8/?ref=app
3 Answers
+ 20
it will be
print(len([0,2])+len([0,2,0,2,4]))
i hope u will understand now
+ 8
I had a similar question a while back and the following reply from John Wells was the best
https://docs.quantifiedcode.com/JUMP_LINK__&&__python__&&__JUMP_LINK-anti-patterns/correctness/mutable_default_value_as_argument.html
+ 2
This happens because after you call f(range(4)), your array keeps the two values added. So it already has length 2. Now, when you run f(range(5)) three more values are added and now f(range(5)) will return 5.
So you end up with 7.
What you should do is maybe pass an empty array to f every time it is called