循环优化一

主角: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日

相关文章

  • pyqt入门

      第一次接触pyqt是在20年刚毕业的时候,时隔两年,恰逢闲暇,正好回过头来对这个模块的知识进行一个整理,不会做系统化的整理,我打算可能会围绕之前做过的小工具对其涉及到的控件、信号和槽等知识进行简单的回忆。后面工作如果再涉及或者想到其他的,会再回来更新完善。   pyqt5:同前面整理的kivy一样,同属于GUI开发框架的范畴,不同的是,pyqt用于桌面应…

    2023年4月2日
    00
  • 线程锁在单例模式中的应用

    多个线程在执行过程中会因为竞争同一个资源而产生线程冲突,造成死锁,从而引出线程锁这个概念 先拿到锁再执行业务操作: 当然我对这一块了解的还不透彻,只是了解在不加锁的多线程情况下,会破坏单例模式,所以就有了下面这一段 1 import time 2 import threading 3 4 5 def decorator(func): 6 lock = thr…

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

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

    Python开发 2023年3月31日
    00
  • 泛型

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

    Python开发 2023年4月2日
    00
  • 多组合少继承

    继承:   强调类与类之间的关系 组合:   强调对象和对象之间的关系 清楚python支持多继承,从而涉及到一些MRO的点,这里不做赘述,在实际工作过程中,我们经常会使用继承来实现代码复用,如果仅仅是为了复用,还是比较推荐使用组合方式,因为继承方式,使得类与类之间的耦合性变得异常紧密,这多少违背了迪米特法则 1 “”” 2 OOP中三大特性之一:继承 3 …

    Python开发 2023年4月2日
    00
  • 方法的多种调用方式

      方法调用确实我们每个人都会,但是我觉得大家可能用的最多的就是那种常规的方式,这里呢,我要记录一下另外几种方式 1 from operator import attrgetter 2 from operator import methodcaller 3 4 5 class Valley: 6 def func(self): 7 print(“测试方法”)…

    Python开发 2023年4月2日
    00
  • 面向对象之多态

    鸭子类型   我们都知道面向对象的语言有三大特性:封装、继承和多态,在这里我浅谈一下python的多态 1 class PageOne: 2 def status(self): 3 return “按期申报页” 4 5 6 class PageTwo: 7 def status(self): 8 return “其他申报页” 9 10 11 class Pa…

    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
合作推广
合作推广
分享本页
返回顶部