Functional programming uses a series of functions to solve problems. According to general programming thinking, when facing a problem, our way of thinking is "how to do it", while functional programming's way of thinking is "what do I want to do". As for the characteristics of functional programming, we will not summarize it for now. Let us directly use examples to understand what functional programming is.
lambda expression (anonymous function):
How to define ordinary functions and anonymous functions:
#Ordinary function def add( a,b):
return a + bprint add(2,3) #匿名函数add = lambda a,b : a + bprint add(2,3)#========输出===========5 5
Naming rules for anonymous functions, identified by the lamdba keyword, the left side of the colon (:) indicates the parameters received by the function (a, b) , the right side of the colon (:) represents the return value of the function (a+b).
Since lamdba does not need to be named when it is created, it is called an anonymous function ^_^
Map function:
Calculate the length of the string
abc = ['com','fnng','cnblogs']for i in range(len(abc)): print len(abc[i])#========输出===========347
Define abc string array, calculate the length of abc and then loop to output the length of each string in the array.
Let’s take a look at how the map() function implements this process.
abc_len = map(len,['hao','fnng','cnblogs'])print abc_len#========输出===========[3, 4, 7]
Although the output results are the same, their forms are different. The first one is a simple numerical value, and the output of the map() function still remains The format of the array.
Case conversion;
Python provides upper() and lower() to convert case.
#Case conversion ss='hello WORLD!'
print ss.upper() #Convert to uppercase print ss.lower() #Convert to lowercase# ========Output===========HELLO WORLD!
hello world!
Convert through the map() function:
def to_lower(item): return item.lower()name = map(to_lower,['cOm','FNng','cnBLoGs'])print name#========输出===========['com', 'fnng', 'cnblogs']
In this example We can see that we have written a function toUpper. This function does not change the value passed in. It just performs a simple operation on the value passed in and returns it. Then, we use it in the map function to clearly describe what we want to do.
Let’s take a look at how to implement string case conversion in a common way:
abc = ['cOm','FNng','cnBLoGs']lowname = []for i in range(len(abc)): lowname.append(abc[i].lower())print lowname#========输出===========['hao', 'fnng', 'cnblogs']
map() function plus lambda expression (Anonymous function) can achieve more powerful functions.
#Find squares#0*0,1*1,2*2,3*3,....8*8squares = map(lambda x : x*x ,range(9))print squares #========Output===========[0, 1, 4, 9, 16, 25, 36, 49, 64]
Reduce function:
def add(a,b): return a+b add = reduce(add,[2,3,4])print add#========输出===========9 对于Reduce函数每次是需要对两个数据进行处理的,首选取2 和3 ,通过add函数相加之后得到5,接着拿5和4 ,再由add函数处理,最终得到9 。
In the previous map function example, we can see that the map function only processes one data at a time.
Then, we discovered how simple it is to implement factorial through Reduce function and lambda expression:
#5Factorial#5! =1*2*3*4*5print reduce(lambda x,y: x*y, range(1,6))#========Output===========120
In addition to map and reduce, Python also has other auxiliary functions such as filter, find, all, and any (also available in other functional languages), which can make your code more concise and easier to use. read. Let’s look at a more complex example:
#Calculate the value of positive integers in the array number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8 ]
count = 0
sum = 0for i in range(len(number)):
if number[i]>0: count += 1 sum += number[i]print sum,countif count>0: average = sum/countprint average
#========Output===========30 6 5
If you use functional programming, this example can be written like this:
number =[2, -5, 9, -7, 2, 5, 4, -1, 0, -3, 8] sum = filter(lambda x: x>0, number) average = reduce(lambda x,y: x+y, sum)/len(sum)print average
#========Output===========5
Finally we can see that functional programming has the following benefits:
1) The code is simpler.
2) Data sets, operations, and return values are all put together.
3) When you read the code, there is no loop body, so you can lose some temporary variables and the logic of variables going back and forth.
4) Your code becomes describing what you want to do, rather than how to do it.
The above is the detailed content of Python-Functional Programming Example Tutorial. For more information, please follow other related articles on the PHP Chinese website!