python入坑第十八天|常用函数
今天和大家一起来学习几个python中非常好用的函数,分别是format()、join()、enumerate()、map()、zip()、reduce()以及filter()
format()
在python中,我们都知道,如果要定义一个函数来输出一个人的名字和年龄,我们可以这样做
在这里我们就可以用高逼格的format()函数来搞事情了,看下面例子
简单解释一下:这里的{}其实就是一个占位符,可以理解为两个{}分别给name和age占了位置。上面是默认按顺序占位,其实我们还可以指定位置,比如下面这个例子
{}里面的数字就是format()参数的位置,0代表第一个参数,1代表第二个参数,依次类推。另外,我们还可以这样指定:
前面说到,0代表函数的第一个参数,1代表第二个参数,那么我们是不是可以直接就把0当作第一个参数,1当作第二个参数···来使用呢?我们来试一下,现在我们定义一个names列表和一个ages列表,然后通过代码演示来看看到底行不行得通
果然不出我们所料,还真的是行得通的。
另外,{}不仅可以为字符串和数字占位,还可以为字典、列表、元组等占位
当占位符比format()的参数多时就会报错哦
但是如果占位符比参数少时,则不会报错,只不过最后一个参数就没有位置了。
format()就暂且学习到这里,当然,它的魅力绝不仅限于此,更多知识还有待蛇友们自己去挖掘哦
join()
说实话,当我第一次学习这个函数的时候,我就被它的美给惊艳到了,一起来看看它的作用吧
这个就不作过多解释了,看例子就一目了然。提醒一下,连接的只能是str类型,其它类型是不允许的
enumerate()
这个函数通俗地说就是为可遍历对象(如列表、字符串等)增添索引的,这样说可能不好理解,那我还是用例子来说明吧
其实我们还可以指定索引的开始位置,下面我以指定1为开始为例
enumerate()最常用在for循环中
map()
再优美的描述和例子相比都是苍白无力的(你怎么不说你自己表达能力差?),我们来看下面的例子。假设现在我们要将两个列表的元素依次相加并依次将结果添加到一个空列表中,我们可以这么做
但是这样一点都不pythonic啊,这时候我们的map()函数就可以闪亮登场了
嗯,这样看起来就顺眼多了,我们还可以使用匿名函数lambda
上面都是列表的长度相等的情况,如果长度不想等会发生什么呢?
没有报错,只不过是选择最短的列表的长度作为所有列表的长度而已
zip()
顾名思义,这个函数应该跟压缩有一腿,我们来看一下它的代码演示
看到例子应该明白是怎么回事了吧,列表可以,元组和字符串应该也是可以的吧,我们来尝试一下
和map()一样,选取的也是最短可遍历对象的长度。
既然有压缩,那自然就有解压
注意这里返回的并不是二维列表,而是元组列表
reduce()
我们都知道天才高斯年纪轻轻就已经能够迅速算出1到100的和,今天我们就用程序来演示一下,但绝对不是下面这段初级代码
我们使用reduce()来搞搞事情
需要注意的是,在python3中,需要从functools模块中导入reduce()函数才能使用
简单解释一下:首先x=1,y=2,x+y=3,然后把3的值赋给x,然后把range(1,101)的3赋给y,x+y=6,依次类推。不得不说这是一个神奇的函数啊。
filter()
下面定义一个函数来找出1到10中的偶数,这个其实是很简单的,就是这样
虽然上面的函数可以满足要求了,但是耐不住我们要装逼啊,我们使用filter()来看一下
依然是顾名思义,这个函数就是把符合的条件过滤出来。
可能很多蛇友都已经发现了,在使用上面一些函数时用到了list(),这是因为要进行显示转换,要不然正常人根本就看不懂啊,以filter()为例。
今天的内容比较多而且比较重要,这都是非常实用的函数,大家好好练习一下吧。
python小白联盟