Python--内置函数总结篇

按照重要程度(日常使用频繁程度,依次增加)

(1) all()  any()  bytes() callable() chr() complex() divmod() eval() exec() format() frozenset() globals() hash() help() id() input() int()  iter() locals() next()  oct()  ord()  pow()    repr()  round()

(2) classmethod()  delattr() getattr() hasattr()  issubclass()  isinstance()  object() property()  setattr()  staticmethod()  super()

(3 )abs() enumerate() filter()  map() max()  min() open()  range() print()  len()  list()  dict() str()  float() reversed()  set()  sorted()  sum()    tuple()  type()  zip()  dir() 

下面针对基础数据类型内置函数进行分类,如下图所示:

 python一共提供了68个内置函数,上图为基础数据类型的38个。

重点的内置函数如下所示:

        

**************************最为重要的4个内置函数***********************************************

(1)zip()  拉链函数,竖着拉。以最小为基准

l1 = [1,2,3]
l2 = ['a','b','c']
print(zip(l1,l2))

运行上述代码得到:<zip object at 0x0000018578954140>  也就是说zip()函数返回的可能是一个迭代器。  因为是迭代器,我们可以通过循环来取值。具体如下

l1 = [1,2,3]
l2 = ['a','b','c']
hehe = zip(l1,l2)
for i in hehe:
    print(i)

结果:
(1, 'a')
(2, 'b')
(3, 'c')

显然:确实像拉链一样竖着进行结合。如果l1,l2列表长度不一致?

l1 = [1,2,3]
l2 = ['a','b','c','d']
hehe = zip(l1,l2)
for i in hehe:
    print(i)

结果:
(1, 'a')
(2, 'b')
(3, 'c')

(2)filter()   用来过滤的

def is_odd(x):
    return x%2 == 1
ret = filter(is_odd,[1,4,6,7,9,13,17]
print(ret)

运行结果<filter object at 0x00000155779622E0>


循环取值
1
7
9
13
17

即:filter()函数共接收两个参数第一个参数是函数名,第二个参数是一个可迭代的对象。通过将后面可迭代当中的所有的值都传到前面的这个函数作为参数。根据返回的结果是True还是False来决定是否在筛选的范围之内。

利用filter能够完成很多有用的功能,例如删除None,或者是空字符串

示例:

def is_str(s):
    return s and str(s).strip()
ret = filter(is_str,[1,'hello','',' ',None,[],7,6,'world',12,9])
for i in ret:
    print(i)
运行结果:
1
hello
7
6
world
12
9

(3)map()

        Python中map函数应用于每一个可迭代的项,返回的是一个结果list,如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。

map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

ret = map(abs,[1,-4,6,-8])
print(ret)
运行结果:<map object at 0x000001E3DDD18550>
for i in ret:
    print(i)
运行结果:
1
4
6
8

filter和map有什么区别?

        执行了filter函数之后的结果集合<=执行前的个数

#filter只管筛选,并不会改变原来的值

#map执行前后元素个数不变,值可能发生改变。

(4) sorted

对于list,dict进行排序,python提供了两个方法

对给定的List  L进行排序。

方法1:用list的成员函数sort进行排序,在本地进行排序,不返回副本

方法2:用built-in函数sorted进行排序,返回副本,原始输入不变。

通俗讲:sorted不是在原列表的基础上排序,而是生成一个新的列表。

                 只要用sorted会产生一个新的列表,也就是两个列表,比较占内存,但是此内置函数要比自己写的排序算法速度要快。

l = [1,-3,0,7,88,10]
l.sort()
print(l)
运行结果i:[-3, 0, 1, 7, 10, 88]


l = [1,-3,0,7,88,10]
ret = sorted(l)
print(l)
print(ret)
运行结果:

[1, -3, 0, 7, 88, 10]
[-3, 0, 1, 7, 10, 88]

参数说明:reverse 排序规则,reverse=True 降序 或者 reverse = False 升序。有默认值

————————————————其他重要的内置函数——————————————

(1)reversed()

l = [1,-3,0,7,88,10]
l.reverse()
print(l)
运行结果:[10, 88, 7, 0, -3, 1]

l = [1,-3,0,7,88,10]
l2= reversed(l)
print(l2)
print(l)
运行结果:
<list_reverseiterator object at 0x00000178B49B8550>
[1, -3, 0, 7, 88, 10]

返回一个迭代器,反转不改变原来的列表,返回一个反序的迭代器

(2)slice()  

l = [1,-3,0,7,88,10]
sli = slice(1,2,3)  #切片规则  这个地方拿到的是一个切片规则,但是至于切谁不知道
print(l[sli])

(3)     bytes()

print(bytes('您好',encoding='GBK').decode('GBK'))
print(bytes('您好',encoding='utf-8'))

运行结果:
您好
b'\xe6\x82\xa8\xe5\xa5\xbd'

#拿到的是gbk编码,想转换成utf-8  

在网络编程中,从网络传输的角度,两个及其想从网络上通信,只能传二进制。

#文件存储

#照片和视频也是以二进制进行存储的

#html网页爬取的也是bytes编码

        bytearry(byte类型的数组)

(4)print()

print('我们是花朵 \n')
print('我们是花朵 \n')
print('我们是花朵 \n')
输出结果:

我们是花朵 

我们是花朵 

我们是花朵 

每次print 打印,就换行一次,在带上\n就会产生空格,如何解决??

print('我们是花朵 \n',end="")
print('我们是花朵 \n',end="")
print('我们是花朵 \n',end="")
运行结果
我们是花朵 
我们是花朵 
我们是花朵

参数end=指定输出的结束符

(5) open()

f = open("file","w")
print("aaaa",file=f)
f.close()

#默认是打印到屏幕,如果你给了它一个文件句柄,你所有打印的东西都打印到文件里了。
默认 file=None

(6)dir()查看一个对象拥有的所有方法   任意数据类型都可以

l = []
ret = dir(l)
print(ret)

运行结果
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']


(7)range()

                range的结果只是一个可迭代的,而不是迭代器

(8)id()  查看内存地址

(9)type()  查看数据类型

*****************************************匿名函数*****************************************

为了解决那些功能简单的需求而设计的一句话函数

        匿名函数本身很简单,但是和内置函数结合起来比较难

def calc(n):
    return n**n
print(calc(10)
#换成匿名函数  如下
calc = lambda n:n**n
print(calc(10)
#换成匿名函数 一行必须写完
 

#匿名函数格式
    函数名 = lambda 参数:返回值

关于匿名函数

(1)参数可以有多个,用逗号隔开

(2)匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值

(3)返回值和正常函数一样可以是任意数据类型、

dic = {'k1':10,'k2':100,'k3':30}
def func(key):
    return dic[key]
print(max(dic,key=func)
print(max(dic,key=lambda k:dic[k])

面试题:

只要考到匿名函数,肯定不是单纯的考察匿名函数,一般情况会暗含内置函数,想到最重要的五个内置函数 max min  sorted filter map

d - lambda p:p*2
t = lambda p"p*3
x=2
x=d(x)
x=t(x)
x=d(x)
print(x)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值