I came across a function that made no sense to me. I thought the function was built to report what numbers appeared to be in both indexes. Somebody please help.

Ok, so this is the code from the screenshot:

```
def same_values(lst1, lst2):
equal_values = [];
for index in range(len(lst1)):
if lst1[index] == lst2[index]:
equal_values.append(index)
return equal_values
print(same_values([5, 1, -10, 3, 3], [5, 10, -10, 3, 5]))
```

I’m going to go step by step:

- We define a function called
**same_values**with 2 parameters,`lst1`

and`lst2`

- Inside the function, we declare an empty array
`equal_values`

- We set a for loop to go from
`0`

to`len(lst1)`

. This means that`index`

in that for loop will take the values 0, 1, 2, … and so on until it equals the size of array`lst1`

- Inside the for loop, we have a conditional statement that checks the item in
`lst1`

in position`index`

to see if its equal (`==`

) to item in`lst2`

in position`index`

as well. So has the for loop iterates, this`if`

statement will ask the question “is`lst1[0]`

equal to`lst2[0]`

?”, and the next iteration: “is`lst1[1]`

equal to`lst2[1]`

?” and so on for as long as many iterations of the for loops as there are. - If the conditional statement is true, inside of it we use
`.append(index)`

to add the value of`index`

at that moment (remember, it goes from`0`

to`len(lst1)`

) to the empty array we declared at the start of the function. - After the for loop has run its course, the function returns the array
`equal_values`

- Finally, a we call the function
`equal_values`

inside a`print`

statement so that when the function returns the array`equal_values`

we can see it printed in the console. We call the function with 2 arrays in this example:`[5, 1, -10, 3, 3]`

and`[5, 10, -10, 3, 5]`

, which will become`lst1`

and`lst2`

inside the function

2 Likes

Step by step execution:

```
lst1 = [5, 1, -10, 3, 3]
lst2 = [5, 10, -10, 3, 5]
equal_values = []
len(lst1) = 5 ---> range(5) = 0, 1, 2, 3, 4
First iteration for loop: index = 0
lst1[0] = 5
lst2[0] = 5
is 5 equal to 5? = YES
equal_value.append(5) ---> equal_value = [5]
Second iteration for loop: index = 1
lst1[1] = 1
lst2[1] = 10
is 1 equal to 10? = NO
Third iteration for loop: index = 2
lst1[2] = -10
lst2[2] = -10
is -10 equal to -10? = YES
equal_value.append(-10) ---> equal_value = [5, -10]
Fourth iteration for loop: index = 3
lst1[3] = 3
lst2[3] = 3
is 3 equal to 3? = YES
equal_value.append(3) ---> equal_value = [5, -10, 3]
Fifth iteration for loop: index = 4
lst1[4] = 3
lst2[4] = 5
is 3 equal to 5? = NO
END of for loop (we finished the values in range(5))
Return [5, -10, 3]
```

2 Likes

Thank you for the clarification, this makes much more sense.

1 Like