范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

分享9个一般人不知道的Python好用技巧

  本篇分享是Python生态系统中关于一些有用的技巧。大多数技巧只是使用标准库中的包,但其他一些技巧会涉及一些第三方包。
  在开始阅读本文内容之前,我们首先来回顾一下Python中的Iterables的概念。
  根据Python标准文档,Iterable的概念如下:
  一种能够一次返回一个成员的对象。
  iterables的示例包括:  所有序列类型(如list、str和tuple)  一些非序列类型,如dict、文件对象以及类的实现中定义了__iter__()方法
  Iterables是一个需要我们牢记的概念,因为接下来我们展示的许多技巧都使用itertools包。
  itertools模块提供了一些函数,用于接收Iterable对象,而不仅仅是打印逐个对象。  2.Trick 1
  在工作学习中,我们经常会需要使用一个简单的函数来实现从一个list来生成新的list,set或dict.此时我们就会用到iterables概念。
  举例来说:
  生成List:  names = ["John", "Bard", "Jessica" "Andres"] lower_names = [name.lower() for name in names]
  生成Set:  names = ["John", "Bard", "Jessica" "Andres"] lower_names = {  name.lower() for name in names}
  生成Dict:  names = ["John", "Bard", "Jessica" "Andres"] lower_names = {  name:name.lower() for name in names}
  个人建议:
  仅当for语句、函数调用和方法调用的数量较少时使用。  3.Trick 2
  有时,我们需要获得两个列表对象之间的所有可能组合。
  我们首先想到的实现可能如下:  l1 = [1, 2, 3] l2 = [4, 5, 6] combinations = [] for e1 in l1:   for e2 in l2:     combinations.append((e1, e2))
  或者简化一下,如下:  combinations = [(e1, e2) for e1 in l1 for e2 in l1]
  上述实现已经很简洁了,但标准库itertools提供product函数,从而提供了相同的结果。如下所示:  from itertools import product l1 = [1, 2, 3] l2 = [4, 5, 6] combinatios = product(l1, l2)4.Trick3
  假设有一个元素列表,我们需要在每对相邻元素之间比较或应用一些操作,这有时称为2个元素的滑动窗口。我们可以采用以下方式:  from itertools import tee from typing import Iterable  def window2(iterable: Iterable):   it, offset = tee(iter(iterable))   next(offset)   return zip(it, offset) l = [1, 2, 3, 4, 5, 6] dd = window2(l) for a in dd:     print(a)
  运行结果如下:  (1, 2) (2, 3) (3, 4) (4, 5) (5, 6)5.Trick4
  有时,我们会需要一个类来存储信息,但是如果我们觉得创建一个类并定义其__init__()函数太麻烦时,我们不妨选择使用dataclass。如下所示:  from dataclasses import dataclass @dataclass class Person:   name: str   age: int   address: str
  上述代码创建了一个具有默认构造函数的类,该类以与声明相同的顺序接收相应字段的赋值。  person = Person(name="John", age=12, address="nanjing street")
  dataclass的另一个优点是,默认情况下,会生成特殊方法,如__str__、   repr   、__eq__等。关于dataclass的更多用法,可以 参考官网 。
  值得一提的是我们在类中声明的成员变量的类型注释(str、int等)并不强制在构造函数中传递的值属于这种类型。也就是说dataclasses构造对象时并不执行数据类型的检查。  6.Trick5
  我们有时希望将一个对象上的操作视为tuple上的操作,一种选择是使用collections.namedtuple,但也存在更类似于dataclass的实现。如下:  from typing import NamedTuple class Coordinate(NamedTuple):   x: int   y: int
  上述定义了一个标准的类可以被当做tuple来使用,如下:  coordinate = Coordinate(10, 15) coordinate.x == coordinate[0] // True  coordinate.y == coordinate[1] // True7.Trick6
  假如我们有一个dataclass,需要验证输入数据是否符合类型注释。在这种情况下,安装第三方软件包pydantic并将
  from dataclasses import dataclass   替换为   from pydantic.dataclasses import dataclass   即可,如下:  from pydantic.dataclasses import dataclass @dataclass class Person:   name: str   age: int   address: str
  这将生成一个类,该类具有根据成员变量声明的类型进行输入数据的解析和类型验证。   Pydantic   在运行时强制执行类型提示,并在数据无效时提供友好的错误提醒。  8.Trick7
  在某些情况下,我们需要生成一些容器中元素频率的基本统计信息。在这种情况下,您可以使用标准结构Counter来接收iterable并根据元素的频率生成相应的统计信息。  from collections import Counter l = [1, 1, 2, 3, 4, 4] frequencys = Counter(l) print(frequencys[1])    // Ouput: 2 print(frequencys[2])    // Ouput: 1 print(frequencys[2323]) // Ouput: 0
  Counter也提供了一些其他方法,比如如most_common,用于检索最常见的元素。  9.Trick8
  如果我们相对两个list中的元素对做相应的函数处理,我们最容易想到的方法如下:  l1 = [1, 2, 3] l2 = [4, 5, 6] for (e1, e2) in zip(l1, l2):   f(e1, e2)
  但是使用函数map可以让代码更加简洁一些。  l1 = [1, 2, 3] l2 = [4, 5, 6] map(f, l1, l2)10.Trick9
  有时候我们需要从一个list中随机选择一个元素,此时我们使用random.choice.如下所示:  from random import choice l = [1, 2, 3] random = choice(l)
  如果我们需要随机选择多个元素呢?当然是使用random.choices.  from random import choices l = [1, 2, 3, 4, 5] random_elements = choices(l, k=3)
  上述代码中的参数k为我们随机选择元素的个数。  11.总结
  本文重点介绍了在python中9个和迭代相关的使用技巧,可以方便提升大家的工作效率。
  您学废了吗?

鸿蒙系统MESH技术,华为路由H6是否值得入手?写在前面也算是互联网上冲浪许久的技术宅,Mesh技术跟WiFi6家里是早就普及了,但在之前的文章中不少人认为Mesh组网的价格偏高,ACAP方案更有性价比等看法,这次入手华为路由H解析python用户自定义异常实例在本篇文章里小编给大家整理的是一篇关于python用户自定义异常的实例讲解,以后需要的朋友们可以跟着学习参考下。说明1程序可以通过创建一个新的异常类来命名它们自己的异常。异常应该是5G自组网调度指挥系统现场救援人员的千里眼5G自组网调度指挥系统现场救援人员的千里眼中国是一个自然灾害频发的国家地震台风洪涝特大交通安全事故山体滑坡建筑质量安全事故等突发性事件如何针对突发事件如何快速展开有效的救援工作如何三星电子计划扩大中国面板比重!评估在GalaxyA系列部分产品采用CINNOResearch产业资讯,面对手机市场的激烈竞争,三星电子计划增加中国产面板的比重,提高价格竞争力。有人预测,虽会在短期内取得成效,但从长期来看,或会产生负面影响。据韩媒增强现实(AR,AugmentedReality)现在国内外的发展情况如何?增强现实(AR)行业主要公司目前全球增强现实(AR)行业的主要公司有Google苹果EONRealityARCo视辰信息科技等。本文核心数据全球增强现实(AR)技术申请量全球AR用7月销量出炉新能源形势大好,特斯拉ModelY神秘失踪?今年,新能源汽车市场可以说是红红火火形势一片大好。8月11日,乘联会公布了最新的销量数据,7月份国内狭义乘用车市场销量为150万辆,同比下降6。2,环比下降4。917月累计销量11谷歌商店下载的应用和国内商店下载的有什么区别吗?我写了几个差别,但看了这个某乎上的答案,就把自己写的删掉,比我写的好多了1。功能模块差异在GooglePlay上架的APP功能模块和国内发布的版本会不一样,可能因为例如版权隐私政策今年618想买一台苹果手机,有哪些机型降价幅度大?大胆预测下,我觉得苹果的降价幅度不会很小,毕竟去年也这么玩了。而且iPhone13的芯片储备量也是非常巨大的,这次不赶紧让iPhone12走一波量,那就太可惜了!第二方面国产手机魅小米的1。4亿像素能干过2400万的单反吗?谢邀讨论!我在想哈苏中画幅相机使用1亿像数,是因为底大而有底气与相机匹配?像数是代表成像中的一个指标,即使手机行业把像数做到10个亿,也无济于成像品质。决定成像品质除了像素外,还有我戴不了硬塞耳机,有什么软塞蓝牙耳机推荐吗?这个丹麦小鸟的无线耳机TrackAir我体验了快1个月,基本都有电感觉比其他家都设计贴心,大家看看自己对比。一续航一周还有一半电量,充电盒也就是耳机盒还支持无线充电。二配备四个耳塞如果美国这一次还是搞不垮华为的话,他们还会怎么做?打击华为只是中美科技战争的一个缩影,为了扼制中国从中低端产业局面中突围,美国的手段无所不用其极。想一想,即便用尽恶劣手段打击华为,也比中美两国直接开战要强。所以,美国的后继手段是无
港股11月4日早报10月比亚迪新能源车销量增249万科销售金额同比下降热点聚焦1。11月3日上午,国家发展改革委组织召开全国长协煤流向监管工作视频会议,介绍并部署煤炭中长期合同履约监测系统数据填报工作,委党组成员秘书长赵辰昕同志出席并作讲话。长协煤不电商节此起彼伏,天津旧物网能否借势掘金收割用户?视频加载中双11的包裹还没收到,双12的促销又即将启动,而接下来还有圣诞促销季,年货节面对接踵而来的各种电商节,商家们的促销折扣活动不断刺激许多消费者们冲动消费。加上近几年来,消费财联社午报新能源赛道强势反弹!概念题材活跃两市逾3000股上涨一早盘盘面回顾两市早盘震荡反弹,三大指数高开高走,深成指创业板指均涨超1。汽车整车汽车配件板块拉升,约20股封涨停板。绿色能源相关的风电光伏储能绿电等板块集体走强,吉鑫科技5连板,每日收评两市百股涨停!成长防守投机方向全面开花新能源赛道迎涨停潮财联社11月4日讯,今日三大指数集体反弹,市场情绪活跃,涨停股近百家。风电光伏储能绿电等板块集体走强,风电股掀起涨停潮。此外,新能源车板块保持强势,军工食品白酒钠电池医美等午后拉升明日主题前瞻四季度并网冲刺这种新能源装机总量或成全球最大今日导读四季度并网冲刺装机总量或成全球最大宁德时代已启动产业化布局或与锂电池共享产业发展红利又有公司透露提价信号大消费领域旺季已至已开立个人钱包1。4亿个数字人民币加速落地ABF载汽车零部件个股走强,压制因素逐步缓解,机构四季度有望迎来回暖财联社(上海,编辑梓隆)讯,今日,汽车零部件板块大幅走高,十余只板块个股涨停,截止收盘,上声电子恒帅股份欣锐科技20cm涨停,圣龙股份迪生力香山股份钧达股份台兴股份凯众股份豪能股份券商战略布局北交所中金投行项目储备高度契合北交所定位,中金财富权限开通破7万户,研究领域体系化财联社(北京,记者高云)讯,北交所开市在即,相关基础规则悉数落地,作为资本市场重要参与者的投行,更是加紧抢滩北交所新赛道。作为投资银行中的领头羊,中金公司是如何推进该业务的?财联社风水轮流转,转完大宗转黄金?Taper靴子落地,机构称黄金有望迎来战术性机会,黄金ETF或可布局财联社(北京,记者黎旅嘉)讯,北京时间周四(11月4日)凌晨200,美联储公布利率决议,维持利率在00。25不变,并于11月启动缩债计划,将每月资产购买规模减少150亿美元,基本符带3颗激光雷达,三大靠山,3。5s破百,比亚迪终于遇对手了?新能源车该有的样子大家都清楚,随着新能源汽车时代的到来,依托电池起家的比亚迪成为了众多车企中在电动新能源领域的领头羊,其最新市值高达7599。48亿,基本上已经逼近了吉利和长城这两爆款又稳了,起步200Ps,一公里4毛钱,比CRV大一圈,价格还厚道随着汽车行业的竞争压力越来越大,各大车企为了博得消费者认可,或者是想要在国内竞争激烈的市场环境下站稳脚跟,那也是表现相当努力,而从目前众多爆款车型的特点来看,消费者无外乎关注颜值高皇冠陆放PK四代汉兰达,姊妹车型价格相差7千,到底值不值?提到大7座SUV,大家最先想到的是哪款车呢?对于很多人来说,或许最先想到的就是丰田汉兰达了吧。作为大7座SUV市场的常青树,很多车型推出时或者上市时,或多或少都会参考汉兰达的表现,