博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3 从零单排5_内置函数
阅读量:4920 次
发布时间:2019-06-11

本文共 3694 字,大约阅读时间需要 12 分钟。

  python一些常用的内置函数及作用请见以下代码:

lis=[1,4,3,8,2,9,10,0]print(all(lis))#判断可迭代对象里头是否存在不为真的元素,如果存在不为真的元素则返回False,否则Trueprint(any(lis))#判断可迭代对象里头是否存在为真的元素,如果存在为真的元素则返回True,否则Falseprint(bin(10).replace('0b',''))#10进制转换为二进制print(bool({}))#把一个对象转换成布尔类型,非空即真,非0即真from hashlib import md5m=md5()print(dir(m))#dir列出m的方法eval('print("haha")')exec('print("haha")')b=exec('[1,2,3]')#exec执行代码时,不返回值,这里b是none  可以执行多行代码,且无返回值c=eval('[1,2,3]')#eval执行代码时,返回值,多用于表达式,这里赋值成功   只可以执行一行代码,有返回值print(b)#会输出Noneprint(c)#会输出[1,2,3]exec("def hs():print(123)")#可执行复杂代码,这里正常余兴eval("def hs():print(123)")#不可以执行复杂代码,会报错print(round(66.66666,3))#round(float,int)保留float小数的int位print(sum([1,6,9]))#求和print(min([1,6,9]))#取最小值print(max([1,6,9]))#取最大值print(hex(34523).replace('0x',''))#10进制转16进制print(hash('asd'))#将一个字符串hash成数字print(globals())#返回程序内所有的变量,返回的是一个字典print(locals())#返回局部变量

  1.eval和exec的区别:  

  最大的一个区别是eval会返回代码运行的值,类似于函数自带了一个return功能,但是exec不会,它只管执行代码,等于是函数没有return值,默认返回了None;还有一个区别是exec可以执行复杂的代码,类似于命名函数,定义对象等,但eval不行,eval只能执行单行代码。

  2.enumerate:

  将索引和元素一起输出,可用于一些和用户交互的地方,或者用于格式打印输出到控制台。

lis = ["a","b","c"]for index,value in enumerate(lis):    print(index,value)    0 a1 b2 c

  3.filter和map的区别

  map这个函数会改变原来的list的元素,这里只的改变有:修改、删除,而filter这个函数只能删除、不能修改元素,还有一点需要注意,这两个函数执行后都是可迭代对象,需要用lsit强制转换才可以得到list数据:

lis=['123',456,{
"age":18},0,[],(1,2,3),(),{},'False']def my_char(var): return varres=filter(my_char,lis)#filter(fun,list),list只要是可迭代类型即可,循环list里的值,调用fun函数,当fun函数返回为真时,保留list的元素,否则,删掉print(list(res))#res得到的是一个对象,需要list方法接收值def maps(var): return str(var)+'值都变咯'res1=map(maps,lis)#map(fun,list),list只要是可迭代类型即可,循环list里的值,调用fun函数,fun函数返回值作为新值保存到rese1对象里print(list(res1))

  4.sort内置函数详解

  题:给定一个字符串,找出包含数字和字母的最长字段,并输出该字段及其长度,如:abc123!#abc*^123%$xyz789!~12as@!~1a,那么最长的字段就是:abc123和xyz789,长度为6。

  解题思路:

  1.找出文件中的特殊字符  ->  2.将特殊文字都替换成同一个字符,比如','  ->  3.将字符串按该文字分割成一个数组  ->  4.找出列表中既包含数字又包含字母最长的字符  ->  5.输出打印

  分割字符串有两种方式,我们先按刚才的解题思路来做一下,找最长字符串方法为设计两个list,一个存字符串,一个存其长度,求出最长长度,循环打印字符,条件为字符长度等于最长长度,代码如下:

import stringstr='#g5$@sdfg45$%dgf&sdfg46&hs[][,.564~kj!k23h~jk!nj1't=string.punctuationfor i in t:    str=str.replace(i,',')lis=str.split(',')new_lis=[]lens=[]for i in lis:    if not i.isdigit() and not i.isalpha() and len(i)!=0:        new_lis.append(i)        lens.append(len(i))for i in new_lis:    lens.sort()    if len(i)==lens[-1]:        print('符合题意的字段有:%s,长度为:%s'%(i,len(i)))

  下面对其进行优化两点:1.字符串切割用正则 2.找最长字符的方式

  这里需要介绍下sort、sorted函数:

  python3 sorted取消了对cmp的支持,格式:sorted(iterable,key=None,reverse=False),key接受一个函数,这个函数只接受一个元素,默认为None;reverse是一个布尔值。如果设置为True,列表元素将被倒序排列,默认为False。

  key的作用原理:key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None ,下面看几个例题:

#1.按照年龄来排序students = [('牛牛', 'A', 15), ('道长', 'B', 12), ('大师兄','B', 10)]students=sorted(students,key=lambda s:s[2])print(students)#结果:[('大师兄', 'B', 10), ('道长', 'B', 12), ('牛牛', 'A', 15)]#2.一个字符串排序,排序规则:小写
<大写>
<奇数>
<偶数,# 原理:先比较元组的第一个值,false
结果[False,True]# Boolean 的排序会将 False 排在前,True排在后 . s='9a13C85c7B24A6b' #正确的顺序应该为:abcABC135792468lis=sorted(s,key=lambda x:(x.isdigit(),x.isdigit() and int(x)%2==0,x.isalpha() and x.isupper(),x.isalpha() and x.lower()))print(''.join(lis))# 1.x.isdigit()的作用是把数字放在前边,字母放在后边.# 2.x.isdigit() and int(x) % 2 == 0的作用是保证奇数在前,偶数在后。# 3.x.isupper()的作用是在前面基础上,保证字母小写在前大写在后.# 4.最后的x表示在前面基础上,对所有类别数字或字母排序。

  根据上面的sort函数的排序原理,优化代码如下:

import string,restr='#sdfg45$@sdfg45$%dgf&sdfg46&hs[][,.564~kj!k122h~j`k!n1j'lis=re.split(r'\W',str)dic={}for i in lis:    if not i.isdigit() and not i.isalpha() and len(i) != 0:        dic[i]=len(i)new_lis=sorted(dic,key=lambda s:s[1],reverse=True)print(new_lis)for i in new_lis:    if len(i)==len(new_lis[0]):        print('最长的字符串有:%s'%i)

 

转载于:https://www.cnblogs.com/znyyy/p/10020668.html

你可能感兴趣的文章
flutter AS 打包
查看>>
Python webpy微信公众号开发之 回复图文消息
查看>>
ubuntu多版本cuda并存与切换【两个博客链接】
查看>>
html5新特性之DOCTYPE声明
查看>>
POJ 3299 Humidex 难度:0
查看>>
快速切题 poj3414 Pots
查看>>
Linux 常用命令
查看>>
五家共井(第1届第3题)
查看>>
c文件操作
查看>>
《Spring In Action》 读书笔记(2) -- bean装配 ...
查看>>
很好很強大..
查看>>
Oracle之子查询:Top-N问题
查看>>
PAT:1011. A+B和C (15) AC
查看>>
JS中的内置对象
查看>>
Android--在Android应用中愉快地写C/C++代码(转)
查看>>
IOSUIcontrol事件
查看>>
docker 部署spring.boot项目【一】(引用外部配置文件)
查看>>
CSS 巧用 :before和:after
查看>>
Winform——用户登陆
查看>>
【博客园IT新闻】博客园IT新闻 iPhone 客户端发布
查看>>