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

Python的10个惊人技巧

时间:2023-03-14 23:00:32 科技观察

虽然从表面上看,Python似乎是一种任何人都可以学习的简单语言,但实际上,许多人可能会惊讶地发现人们可以精通这门语言。Python是那些容易学习但很难掌握的东西之一。在Python中,通常有多种做事方式,但很容易做错事,或者重新发明标准库并浪费时间,仅仅是因为您不知道该模块的存在。不幸的是,Python标准库是一个巨大的野兽,此外,它的生态系统绝对是巨大的。尽管可能有200万千兆字节的Python模块,但您可以使用通常与Python中的科学计算相关的标准库和包来学习一些有用的技巧。№1:反转字符串尽管看起来很基础,但使用char循环反转字符串可能非常乏味和烦人。幸运的是,Python包含一个简单的内置操作来精确执行此任务。为此,我们只需访问字符串上的索引::-1即可。a="!dlrowolleH"backward=a[::-1]№2:Dimasavariable在大多数语言中,为了将数组放入一组变量中,我们需要迭代值或访问按位置调暗,像这样:firstdim=array[1]但是,在Python中,有一种更酷的方法。要将值列表更改为变量,我们可以简单地设置变量名等于数组,长度相同:array=[5,10,15,20]five,ten,fift,twent=array№3:Itertools如果你打算花时间使用Python,你肯定想熟悉itertools。Itertools是标准库中的一个模块,可让您不断解决迭代问题。它不仅使编写复杂的循环变得更加容易,而且使您的代码更快、更清晰。这只是Itertools用法的一个例子,但还有数百种:c))№4:智能开箱即用地迭代解压值可能非常耗时费力。幸运的是,Python有几种很酷的方法来解包列表!一个例子是*,它将填充未分配的值并将它们添加到变量名下的新列表中。a,*b,c=[1,2,3,4,5]№5:枚举如果您不了解枚举,您可能应该熟悉它们。枚举将允许您获取列表中某些值的索引。当使用数组而不是数据帧时,这在数据科学中特别有用。fori,winenumerate(array):print(i,w)№6:nameslices在Python中拆分列表真的很容易!有各种很棒的工具可用,但其中一项肯定有价值的功能是命名列表切片的能力。这对于Python中的线性代数特别有用。a=[0,1,2,3,4,5]LASTTHREE=slice(-3,None)slice(-3,None,None)print(a[LASTTHREE])№7:组邻接表当然可以在for循环中将相邻循环分组相当容易,尤其是通过使用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)№8:生成器的next()迭代在大多数正常的编程情况下,我们可以使用计数器来访问索引并获取我们的位置编号,计数器将简单地添加到以下值:array1=[5,10,15,20]array2=(x**2forxinrange(10))counter=0foriiinarray1:#Thiscodewouldn'tworkbecause'i'isnotinarray2.#i=array2[i]i=array2[counter]#^^^这段代码会因为我们正在访问fi的位置但是,我们可以使用next()代替。Next使用一个迭代器将当前位置存储在内存中并在幕后遍历列表。g=(x**2forxinrange(10))print(next(g))print(next(g))№9:Counter标准库中另一个很棒的模块是collections,今天要给大家介绍的是counterin。使用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)]№10:出列收集模块中的另一个很酷的东西是出列。看看我们可以用这种类型做的所有巧妙的事情!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)打印(Q)