Python中那些简化代码的方法~ if、for、lambda

前言:浅研究了一下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 的位置

上面的所有方法都可以灵活的配合多种函数使用,具体情形,就需要根据实际情况做自由发挥啦~


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值