Python看似是一门简单的语言,谁都能学会,但实际上,学了不等于精通。Python的“后劲”超乎我们的想象。入门容易但精通难。在Python中,一个人往往有多种做事方式,但也有很多容易出错的地方;或者你必须重新创建标准库只是因为你不知道模块存在,这是浪费时间。Python标准库是一头巨兽,其生态系统绝对庞大。虽然Python模块的大小可能有200万千兆字节,但我们可以使用Python中与标准科学计算相关的库和包学习一些技巧。1、虽然反转字符串看起来是一个很基础的操作,但是用char循环来反转字符串可能会非常繁琐和麻烦。幸运的是,Python包含一个简单的内置操作来执行此任务,我们只需要访问字符串上的索引::-1即可。a="!dlrowolleH"backward=a[::-1]2.Dims作为变量在大多数语言中,将数组放入一组变量需要迭代循环值,或按位置访问dims,如下所示:firstdim=array[1]但是,在Python中有更好更快的方法。要将一列值更改为变量,只需将变量名设置为与数组长度相同的数组:array=[5,10,15,20]five,ten,fift,twent=array3。generator'snext()Iteration在编程中的大多数正常情况下,可以访问索引,并使用计数器来获取位置编号,计数器将只是一个值,添加到:array1=[5,10,15,20]array2=(x**2forxinrange(10))counter=0foriinarray1:#Thiscodewouldn'tworkbecause'i'isnotinarray2.#i=array2[i]i=array2[counter]#^^^Thiscodewouldbecauseweareaccessingthepositionofi我们也可以用next().Next使用一个迭代器将当前位置存储在内存中并在幕后迭代列表:g=(x**2forxinrange(10))print(next(g))print(next(g))4。智能解包迭代解包值可能非常耗时,在Python中有几种很好的解包列表的方法。其中之一是*,它将填充未分配的值并将它们添加到变量名下的新列表中。a,*b,c=[1,2,3,4,5]5、不懂枚举就不好枚举。枚举可以得到列表中某些值的索引。这在数据科学中使用数组而不是数据框时特别有用:fori,winenumerate(array):print(i,w)6.命名切片Python,splitlist很简单,各种好工具都可以做。一个特别好的功能是它还可以命名列表,这对于Python中的线性代数特别有用:a=[0,1,2,3,4,5]LASTTHREE=slice(-3,None)slice(-3,无,无)打印(a[最后三])7。Itertools如果你深入学习Python,那么你一定对itertools不陌生。itertools是标准库中一个不断解决迭代问题的模块。它不仅使编写复杂的循环变得更加容易,而且还使代码更清晰、更快。有数百个Itertools用法示例,看看其中一个:c=[[1,2],[3,4],[5,6]]#Let'sconvertthismatrixtoa1dimensionallist.importitertoolsasitnewlist=list(it.chain.from_iterable(c))8.对相邻列表进行分组在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)9。计数器集也是模块中一个非常好的标准库。下面我们介绍集合中的计数器。使用计数器,您可以轻松获得列表的计数。这对于获取数据中值的总数、数据的空计数以及查看数据的唯一值很有用。“为什么不直接使用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。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)这些都是我一直爱用的Python技巧,非常通用实用。总是有机会在实践中使用它。Python的标准库函数工具箱越来越丰富,有很多我闻所未闻的工具。永不停止学习是多么令人兴奋!
