循环优化一

主角:takewhile

  判断序列中元素是否为偶数,奇数则终止

这是我们最常用的一种方式,其实没必要这么复杂

 1 a = [4, 6, 7, 3]
 2 
 3 
 4 def judge_is_even(item):
 5     if item % 2 == 0:
 6         return True
 7     return False
 8 
 9 
10 # 最常用
11 for item in a:
12     if not judge_is_even(item):
13         break
14     print(item)

优化后:

 1 from itertools import takewhile
 2 
 3 a = [4, 6, 7, 3]
 4 
 5 
 6 def judge_is_even(item):
 7     if item % 2 == 0:
 8         return True
 9     return False
10 
11 
12 for item in takewhile(judge_is_even, a):
13     print(item)

其原理为:遍历第二个可迭代对象,当前值调用第一个入参,并对返回的结果进行真值测试,True继续,False终止

 

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:循环优化一 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • __call__用法简谈

      python一切皆对象,从是否可调用层面讲,对象又可以分为可调用对象、不可调用对象 在本篇中,类中实现__call__双下方法,即将该类的实例变为可调用对象   普通类未实现__call__的方法,实例是不可调用的,先看 1 class Valley: 2 … 3 4 5 if __name__ == ‘__main__’: 6 v = Valley…

    Python开发 2023年4月2日
    00
  • 派生类中扩展属性

    对于在父类中存在的属性,如果要在其派生类中继续扩展属性   可以这样实现 1 class Valley: 2 def __init__(self): 3 self._name = None 4 5 @property 6 def name(self): 7 return self._name 8 9 @name.setter 10 def name(self…

    Python开发 2023年4月2日
    00
  • 泛型

    第一个参数类型决定执行特定的方法体 一、单分派泛函数   只对函数的第一个参数做类型检查,发现局限性太大,没什么特别的应用场景,也可能是我没用到 1 from functools import singledispatch 2 3 4 @singledispatch 5 def func(a, *args): 6 raise TypeError(“暂不支持{…

    Python开发 2023年4月2日
    00
  • 在*args, **kwargs上强制规定参数的调用约定

      首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系   这个知识点涉及到两个类:               Signature、               Parameter创建一个签名对象,这是个重点 1 from inspect import Signature, Parameter 2 3 params = [Parame…

    Python开发 2023年4月2日
    00
  • 工匠回忆(二)

    接上文 4、条件分支控制流   避免分支嵌套,异常放在代码片段最前面   4.1、归约函数   4.2、条件表达式的封装避免过长而导致可读性下降   4.3、德摩根定律   4.4、and、or优先级   4.5、or短路效应   4.6、消失的分支     4.6.1、二分查找算法     4.6.2、字典算法   5、异常错误处理   无需多言   6、…

    python 2023年5月4日
    00
  • 状态机的实现

    代码里我们经常会出现大量的条件判断,在这种情况下,我们可以实现状态机避免过度使用 有一种方式是把各种状态归为各种状态类 还有一种方式是修改实例的__class__属性 1 “”” 2 状态机的实现 3 修改实例的__class__属性 4 “”” 5 6 7 class Connection: 8 def __init__(self): 9 self.new…

    Python开发 2023年4月2日
    00
  • 生成器的反向验证

    生成器是一种特殊的迭代器,也可以说其父类型是迭代器   1、迭代器其实也有很多点要清楚,这里先不做赘述   2、要清楚,迭代器调用iter()返回的是自身 1 def func(s, e): 2 “”” 3 生成器函数 4 :param s:起始值 5 :param e: 末值 6 :return: 7 “”” 8 num = s 9 while num &…

    Python开发 2023年4月2日
    00
  • 代码坏味道(一)

    1、神秘命名   模块、类、函数、变量等的命名是编程中最难的两件事之一,正因为如此,改名可能是最常用的重构手法   对应的重构手法有:改变函数声明、变量改名、字段改名 2、重复代码   顾名思义,就是在多处看到相同的代码结构   对应的重构手法有:移动语句、提炼函数 3、过长的函数   确保函数内代码处在同一层抽象级,无须担心进程内的函数开销,提倡小函数 4…

    Python开发 2023年3月31日
    00
合作推广
合作推广
分享本页
返回顶部