One way to think of the difference between imperative and functional paradigms is that with imperative you have to explicitly code the order of your operations (I'm using very loose language here to make it simple for you). In contrast, with functional programming you are not defining the sequence but rather you are declaring what you are trying to model (this is why it is sometimes referred to as declarative style of programming).
So in the example below, if I want to determine which numbers are even in the list I have to explicitly code the loop and check whether each number is even or not when coding imperatively. I didn't need to do that in the functional example. In that example, I just defined what it means for a number to be even and then I just applied this abstraction/function to the list. A simple one liner.
There are more differences between the two paradigms but this should give you an idea.
Imperative:
naturalNumbers = [0,1,2,3,4,5,6,7,8,9]
def printEvenNumbers (listOfNumbers):
for x in listOfNumbers:
if x % 2 == 0:
print True
else:
print False
Functional:
def evenNumber (x):
return (x % 2) == 0
print(map(evenNumber, naturalNumbers))