Can someone please help me understand exactly how the logic is working in below statement of python -
return ["even", "odd"][num % 2]
This function is correctly returning even /odd values.
Can someone please help me understand exactly how the logic is working in below statement of python -
return ["even", "odd"][num % 2]
This function is correctly returning even /odd values.
["even", "odd"]
is a list with two elements, thus with the indexes 0 and 1.
It is indexed ([]
) with num % 2
.
If num
is even, num % 2
is 0
, and ["even", "odd"][0]
is "even"
.
If num
is odd, num % 2
is 1
, and ["even", "odd"][1]
is "odd"
.
The %
sign is the mathematical modulus function. num % 2
will return 0 when num is even, and 1 when num is odd. This value is then used to return the corresponding element of ["even", "odd"]
.
It is simply returning a string. The proper value from list ["even", "odd"]
is extracted using the remainder(num%2
).
For example, let's say num
is 4. So, num%2
is 0 . In this case the 0th element of the list (i.e. even
) will be returned.
Now if num
is 5, the remainder will be 1 and the string in position 1 will be returned (in this case odd
). Notice there is no other possible outcome of num%2
even for negative numbers, so no chance of accessing an index which is out of range.
numbers_list = list(range(10))
def odd_even(any_list):
odd = []
even = []
for element in any_list:
if element % 2 == 0:
# 10 % 2 = 0, 10 % 3 = 1, 10 / 4 = 2(2) => 10 % 2 = 2
even.append(element)
else:
odd.append(element)
return odd, even
# there are two way for answers. first - when element % 2 = 0 , so this is even number
# and second - when element % 2 = 1, so this is odd number
print(odd_even(numbers_list))
# if we'll want to run the code output will like this:
# ([1, 3, 5, 7, 9], [0, 2, 4, 6, 8])