当前位置: 首页 > 科技观察

Python的五个重要功能,要是能早点了解就好了!

时间:2023-03-12 17:38:10 科技观察

Python作为近几年超级火爆的新兴编程语言,其语言特性非常强大,这是有目共睹的,我就不用赘述了。Python有很多功能,小新利用Python的交互地图和区块链功能创建了很多应用,令人兴奋。但由于其功能众多,初学者很难一开始就掌握所有的功能。即使您是从C或MATLAB等其他语言转过来的程序员,使用更抽象的Python进行编码对您来说绝对是一种不同的体验。但是虽然功能很多,但是总有主次之分。为了方便大家早日了解Python的一些主要功能,小新特意整理了其中非常重要的5个。1.生成器——内存效率当你打算计算大量的结果时使用生成器,但同时又想避免同时分配所有结果所需的内存。换句话说,它们即时生成值,但不会将之前生成的值存储在内存中,因此它们只需要迭代一次。生成器通常用于读取大文件或使用yield关键字生成无穷无尽的序列。在大多数数据科学项目中,我发现它很有用。defgen(n):#aninfinitesequencegeneratorthatgeneratesintegers>=nwhileTrue:yieldnn+=1G=gen(3)#startsat3print(next(G))#3print(next(G))#4print(next(G))#5print(next(G))#6python-generator由GitHub2以?托管。虚拟环境——隔离如果你看完这篇文章,你可能只记得其中一个,应该就是虚拟环境的使用。Python应用程序经常使用许多由开发人员开发的具有复杂依赖性的不同软件包。不同的应用程序是用一个特定的库设置开发的,结果不能用其他版本的库复制。没有一个安装程序可以满足所有应用程序要求。condacreate-nvenvpippython=3.7#selectpythonversionsourceactivatevenv...sourcedeactivate因此,为每个应用程序创建一个单独的虚拟环境venv是至关重要的,这可以通过pip或conda来完成。3.列表理解——紧凑的代码很多人认为lambda、map和filter是每个初学者都应该学习的函数。虽然我认为这些功能值得关注,但由于缺乏灵活性,大多数时候它们并不是特别有用。Lambda是一种将一次性函数生成为单行函数的方法。如果函数被多次调用,性能会下降。另一方面,map将函数应用于列表中的所有元素,而filter获取集合中满足用户定义条件的元素子集。add_func=lambdaz:z**2is_odd=lambdaz:z%2==1multiply=lambdax,y:x*yaList=list(range(10))print(aList)4#[0,1,2,3,4,5,6,7,8,9]python-lambda由GitHub托管,由?提供列表理解是一种简洁灵活的方式,可以使用灵活的表达式和条件从其他列表创建新列表。它由一个方括号和一个表达式或函数组成,仅当元素满足特定条件时才应用于列表中的每个元素。它还可以通过嵌套的方式处理嵌套列表,比map和filter灵活多了。#Syntaxoflistcomprehension[expression(x)forxinaListifoptional_condition(x)]print(list(map(add_func,aList)))print([x**2forxinaList])#[0,1,4,9,16,25,36,49,64,81]#[0,1,4,9,16,25,36,49,64,81]print(list(filter(is_odd,aList)))print([xforxinaListifx%2==1])#[1,3,5,7,9]#[1,3,5,7,9]python-list-comprehension由GitHub4以?托管。列表操作-循环listPython允许在aList[-1]==aList[len(aList)-1]中出现负索引。因此,可以通过调用aList[-2]等得到列表中的倒数第二个元素。列表也可以用aList[start:end:step]语法进行切片,包括开始元素但不包括结束元素。因此,调用aList[2:5]将导致[2,3,4]。该列表也可以通过调用aList[::-1]来反转,我发现这是一种非常巧妙的技术。列表也可以解压缩为单独的元素,或者元素和子列表,两者混合在一起,用星号标记。a,b,c,d=aList[0:4]print(f'a={a},b={b},c={c},d={d}')#a=0,b=1,c=2,d=3a,*b,c,d=aListprint(f'a={a},b={b},c={c},d={d}')#a=0,b=[1,2,3,4,5,6,7],c=8,d=9python-unpacking由GitHub5以?托管。压缩(Zipping)和枚举(enumerate)-for循环压缩(Zip)函数创建一个迭代器,该迭代器聚合来自多个列表的元素。它允许在for循环中并行遍历列表并并行排序。用星号解压它。numList=[0,1,2]engList=['零','一','二']espList=['cero','uno','dos']打印(列表(zip(numList,engList,espList)))#[(0,'zero','cero'),(1,'one','uno'),(2,'two','dos')]fornum,eng,espinzip(numList,engList,espList):print(f'{num}is{eng}inEnglishand{esp}inSpanish.')#0iszeroinEnglishandceroinSpanish.#1isoneinEnglishandunoinSpanish.#2istwoinEnglishanddosinSpanish.python-zip-1由GitHubEng=list(zip(engList,espList)托管,numList))Eng.sort()#sortbyengLista,b,c=zip(*Eng)print(a)print(b)print(c)#('一','二','零')#('uno','dos','cero')#(1,2,0)乍一看,枚举(Enumerate)可能有点吓人,但随后你会发现在很多情况下使用枚举非常方便。它是for循环中经常使用的自动计数器,所以不需要用counter=0和counter+=1来创建和初始化变量计数器。枚举(enumerate)和压缩(zip)是两个强大的工具,可以创建for循环时使用。大写=['A','B','C','D','E','F']小写=['a','b','c','d','e','f']fori,(upper,lower)inumerate(zip(upperCase,lowerCase),1):print(f'{i}:{upper}and{lower}.')#1:Aanda.#2:Bandb.#3:Candc.#4:Dandd.#5:Eande.#6:Fandf.python-enumeratehostedwith?byGitHub当然,除了这5个功能,Python还有很多其他好用的功能,欢迎大家离开给小新留言他们最感兴趣的功能,根据大家的意见,小新会在下一篇Python文章中继续介绍更多大家感兴趣的功能~