前言:浅研究了一下python代码的简化写法,研究目的:装杯 (*^▽^*) /~ 。在此做一下总结,以后碰到新方法再补充,欢迎指正~
1、if
常规写法:
这里做一个简单的 if 判断,把 A 和 B 中的最大值赋给 Max
简化写法:
if 简化写法的语法是:
True执行语句 if 条件 else False执行语句
2、for
(1)1层for循环
常规写法:
这里通过一个简单的 for 循环,输出 test_list 的内容
简化写法:
for 循环简化写法的语法是:(注意[ ])
[执行的操作 for 循环]
(2)2层for循环
常规写法:
这里通过2层for循环,将 test_list 中的每个元素和 temp_list 中的每个元素相加并输出显示
简化写法:
2层 for 循环简化写法的语法是:(注意[ ])
[执行的操作 for 循环1 for 循环2]
(3)for 和 if 相结合
常规写法:
这里通过 if 条件筛选,输出 test_list 中 >4 的元素
简化写法:
for 和if 相结合简化写法的语法是:
[执行的操作 for 循环 if 条件]
(4)for 和 sum 相结合
常规写法:
这里通过 for 循环,对 test_list 进行了一个求和运算
简化写法:
配合 sum 函数一起用,简直不要太方便,举一反三,还有很多类似的小函数都可以和 for 循环联动一下的~
3、lambda (匿名函数)
lambda是匿名函数,即没有函数名称,一般用于编写简单的、单行的小函数,可以实现类似 def 函数的功能,但不需要 def 关键字来定义,
(1)lambda 语法:
lambda arguments:expression
lambda 是 python 关键字
arguments 是参数,可以是 0 个或多个参数
expression 是表达式,表达式中的参数需在 arguments 中定义,表达式只能是单行的,也只能有一个表达式
(2)无参数形式:
这里没有传参,只是做了一个输出的效果
(3)一般用法:
这里对 a、b 参数做了一个求和运算,然后通过 myAdd() 传参调用lambda
(4)与 map() 相结合
map() 函数会根据提供的函数对指定序列做映射,语法是:
map(function, iterator)
即对 iterator 中的每个元素调用 function 函数,并返回 function 函数的返回值,举例:
这里定义了一个 square() 函数,用来计算参数 x 的立方值,然后通过 map() 来调用这个函数,目的是计算 [1, 2, 3] 列表中每个元素的立方值,这里我们发现输出是
<map at 0x256fcbf1400>
这是为什么捏?这是因为在python3中,map() 的返回值是 iterators,如果我们想以 list 形式输出,需要将其转换为 list 就可以了,举例:
lambda 和 map 配合用法:
我们把 function 函数,用 lambda 来写,这样就更加简洁明了,对于小的函数运算,我们就不需要单独写一个 def 啦,这里也可以传两个列表进行计算:
这里是对两个列表做了一个加法运算,即 [1, 2, 3] 和 [1, 2, 3]对应位置相加
(5)与 filter() 相结合
filter() 函数会根据提供的函数对指定序列做过滤,语法是:
filter(function, iterator)
即对 iterator 中的每个元素调用 function 函数,function 函数会返回 True 或 False,filter 接收的是返回为 True 的结果,举例:
这里定义了一个 even() 函数,用来筛选输入的参数是否为偶数,然后通过 filter() 来调用 even() 函数,输出 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 中的偶数。even() 函数对于偶数,x % 2 == 0 就会判断为 True,然后就会被放到 filter 中啦,这里也需要做一下 list 转换
lambda 和 filter 配合用法:
很长的一行代码,但是一点点拆开来看,就会发现,还是很简单的,简直是装杯必备~
(6)与 reduce() 相结合
reduce() 函数会对参数序列中的元素进行累积,语法是:
reduce(function, iterable[, initializer])
function 中有 2 个参数,reduce() 函数会先将参数序列中的前两个元素做 function 操作,然后将返回的结果再与参数序列中的第 3 个元素做function 操作,举例:
在使用 reduce() 之前,需要先引入模块,from functools import reduce,这里定义了一个 add() 函数,用来做加法运算,而 reduce() 函数则是做了一个 [1, 2, 3, 4, 5, 6] 列表的加和运算,reduce 中具体发生的情况为:
lambda 和 reduce 配合用法:
套路如上,由 lambda 来替换掉 def 的位置
上面的所有方法都可以灵活的配合多种函数使用,具体情形,就需要根据实际情况做自由发挥啦~