当前位置: 首页 > 后端技术 > Python

个性化和改进您的Python代码的10个技巧

时间:2023-03-26 16:03:18 Python

虽然从表面上看,Python似乎是一种任何人都可以学习的简单语言,但实际上,许多人可能会惊讶地发现人们可以精通这门语言。Python是那些容易学习但很难掌握的东西之一。在Python中,通常有多种做事方式,但很容易做错事,或者重新发明标准库并浪费时间,仅仅是因为您不知道该模块的存在。不幸的是,Python标准库是一个巨大的野兽,此外,它的生态系统绝对是巨大的。尽管可能有200万千兆字节的Python模块,但您可以使用通常与Python中的科学计算相关的标准库和包来学习一些有用的技巧。反转字符串尽管看起来很基础,但使用char循环反转字符串可能非常乏味和烦人。幸运的是,Python包含一个简单的内置操作来精确执行此任务。为此,我们只需访问字符串上的索引::-1即可。a="!dlrowolleH"backward=a[::-1]dimmedasavariable在大多数语言中,为了将数组放入一组变量中,我们需要遍历值或通过以下方式访问dims位置,如下示例:firstdim=array[1]但是,在Python中,有更酷的方法。要将值列表更改为变量,我们可以简单地设置变量名等于具有相同长度的数组:array=[5,10,15,20]five,ten,fift,twent=arrayitertoolsSpendany时间在Python中,那么您肯定想熟悉itertools。Itertools是标准库中的一个模块,可让您不断解决迭代问题。它不仅使编写复杂的循环变得更加容易,而且使您的代码更快、更清晰。这只是Itertools用法的一个示例,但还有数百个:c=[[1,2],[3,4],[5,6]]#让我们将此矩阵转换为一维列表。importitertoolsasitnewlist=list(it.chain.from_iterable(c))智能地开箱即用地迭代解包值可能既费时又费力。幸运的是,Python有几种很酷的方法来解包列表!一个例子是*它将填充未分配的值并将它们添加到变量名下的新列表中。a,*b,c=[1,2,3,4,5]枚举如果你不知道枚举,你可能应该熟悉它。枚举将允许您获取列表中某些值的索引。当使用数组而不是数据帧时,这在数据科学中特别有用。fori,winenumerate(array):print(i,w)nameslicing在Python中拆分列表真的很容易!有各种各样的好工具供您使用,但其中一项非常有价值的功能是能够命名列表的各个部分。这对于Python中的线性代数特别有用。a=[0,1,2,3,4,5]LASTTHREE=slice(-3,None)slice(-3,None,None)print(a[LASTTHREE])相邻列表组当然可以在afor循环将相邻的循环组合起来相当容易,尤其是使用zip()时,但这肯定不是最好的方法。为了使事情变得更容易和更快,我们可以使用zip编写一个lambda表达式,它将像这样对我们的相邻列表进行分组:a=[1,2,3,4,5,6]group_adjacent=lambdaa,k:zip(*([iter(a)]*k))group_adjacent(a,3)[(1,2,3),(4,5,6)]group_adjacent(a,2)[(1,2),(3,4),(5,6)]group_adjacent(a,1)next()生成器的迭代在大多数正常的编程情况下,我们可以使用计数器来访问索引并获取我们的bin编号,计数器将只是添加到的值:array1=[5,10,15,20]array2=(x**2forxinrange(10))counter=0foriinarray1:#Thiscodewouldn'tworkbecause'i'isnotinarray2.#i=array2[i]i=array2[counter]#^^^这段代码会因为我们访问的是i的位置,所以可以用next()代替。Next使用一个迭代器将当前位置存储在内存中并在幕后遍历列表。g=(x**2forxinrange(10))print(next(g))print(next(g))Counter标准库中另一个很棒的模块是collections,今天要给大家介绍的是集合中的计数器。使用Counter,我们可以轻松获取列表的计数。这对于获取数据中值的总数、获取数据的空计数以及查看数据的唯一值很有用。我知道您在想什么“为什么不直接使用Pandas?”这当然是一个有效的观点。然而,用Pandas自动化它肯定更困难,并且只是在部署算法时需要添加到虚拟环境中的另一个依赖项。此外,Python中的计数器类型有很多Pandas家族没有的特性,这使得它在某些情况下更加有用。A=collections.Counter([1,1,2,2,3,3,3,3,4,5,6,7])ACounter({3:4,1:2,2:2,4:1,5:1,6:1,7:1})A.most_common(1)[(3,4)]A.most_common(3)[(3,4),(1,2),(2,2)]dequeue收集模块中的另一个很酷的东西是dequeue。看看我们可以用这种类型做的所有巧妙的事情!importcollectionsQ=collections.deque()Q.append(1)Q.appendleft(2)Q.extend([3,4])Q.extendleft([5,6])Q.pop()Q.popleft()Q.rotate(3)Q.rotate(-3)print(Q)本文翻译自EmmettBoudreau的文章《10 Smooth Python Tricks For Python Gods》https://towardsdatascience.co...文渊网,仅供学习,如有侵权请联系删除。学习Python的路上肯定会遇到困难,不要慌张,我这里有一套学习资料,包括40+电子书,800+教学视频,涉及Python基础、爬虫、框架、数据分析、机学习等等,别怕你学不会!https://shimo.im/docs/JWCghr8...《Python学习资料》关注公众号【蟒圈】,每日优质文章推送。