【python编程】常用的方法和函数

本篇介绍一些Python中常用的方法和函数,主要是字符串,列表里面进行处理。

目录

1. str.split( str=' ', num) [n]

2.  re.findall ( pattern, string, flags=0 )

3. 平方根函数math.sqrt()和四舍五入函数round()

4. 排序函数list.sort()和sorted()

5. set容器:自动删除重复数据

6. 将n进制转化为十进制int( x, base=10 )

7. 字典的get方法

9. re.search( pattern, string, flags=0 )函数


1. str.split( str=' ', num) [n]

第一个参数表示分割符(空格或者逗号),第二个参数表示分成几片,第三个参数n表示分割后的第几片,可以直接用。一般只有第一个参数。函数返回一个列表,里面是截取所得字符串。

一般适用于处理输入。

2.  re.findall ( pattern, string, flags=0 )

返回string中所有与pattern匹配的全部字符串返回形式为数组

(1)用法1:搜索字母和数字时,并列即可,且有+表示截取字符串,无+表示单个字符

import re
str1='a587dn%#12SD2D'
list=re.findall(r'[0-9]+',str1)
print(list)
list=re.findall(r'[0-9a-z]+',str1)
print(list)
list=re.findall(r'[A-Za-z]',str1)
print(list)

输出:
['587', '12', '2']
['a587dn', '12', '2']
['a', 'd', 'n', 'S', 'D', 'D']

(2)用法2:\d—匹配0到9之间的数字\D—匹配除0到9之外的字符

import re
str1='a587dn%#12SD2D'
list=re.findall('\d',str1)
print(list)
list=re.findall('\d+',str1)
print(list)
list=re.findall('\D',str1)
print(list)
list=re.findall('\D+',str1)
print(list)

输出:
['5', '8', '7', '1', '2', '2']
['587', '12', '2']
['a', 'd', 'n', '%', '#', 'S', 'D', 'D']
['a', 'dn%#', 'SD', 'D']

3. 平方根函数math.sqrt()和四舍五入函数round()

注意:round函数是四舍五入,int强制取整是去掉尾部。

import math
a=23.2314568
print(round(a,2))
b=25
print(math.sqrt(b))

输出:
23.23
5.0

4. 排序函数list.sort()和sorted()

list.sort( key, reverse )是给列表排序,且只能给列表进行排序,可以排序列表中相同元素的序列,不论是数字还是字符串,只要是元素类型相同就可以排序。参数1表示排序键(只能有一个元素),参数2表示升序或者降序,reverse = True 降序, reverse = False 升序(默认)。且无返回值,是给列表本身排序

sorted( lists, key, reverse )函数,参数1为要排序的列表,元组或者字典,参数2表示排序键,可以有多个排序键,参数3表示升序或者降序。返回值为列表

示例1:

list1={'adf':1,'ncv':2,'ccd':3,'cba':4}
print(sorted(list1,reverse=True))

list2=['adf','ncv','ccd','cba']
list2.sort()
print(list2)

输出:
['ncv', 'ccd', 'cba', 'adf']
['adf', 'cba', 'ccd', 'ncv']

示例2:多个排序键

import operator
list1=[('Jony','17','93'), ('Json','21 ','85'),
       ('John','20','90'),('Tom','19','80'),
       ('Jony','17','91')]
print(sorted(list1,key=lambda list:list[2],reverse=True))
print(sorted(list1,key=operator.itemgetter(1,2)))

输出:
[('Jony', '17', '93'), ('Jony', '17', '91'), ('John', '20', '90'), ('Json', '21 ', '85'), ('Tom', '19', '80')]
[('Jony', '17', '91'), ('Jony', '17', '93'), ('Tom', '19', '80'), ('John', '20', '90'), ('Json', '21 ', '85')]

总结:

(1)list.sort()只能给列表排序,且要求列表中元素类型相同,且排序键只能有一个,无返回值,是给列表本身排序

(2)sorted()函数可以给列表,元组或者字典排序,排序键可以有多个,返回值是列表,默认排序字典为依照键排序;

(3)sorted()函数选择多个排序键时,有lambdaoperator.itemgetter()两种方法。

sorted(lists,key=lambda list:list[2])
sorted(lists,key=operator.itemgetter(1),reverse=False) # 默认flase为升序
sorted(lists,key=operator.itemgetter(1,2))

(4)list.sort()多多少少有一点SB,多个排序键写起来很麻烦。所以要是单纯对单元素列表进行排序可以选sort多个排序键选sorted函数

5. set容器:自动删除重复数据

set容器能自动删除重复数据,去掉列表或元组中重复元素,返回一个集合

lines='hell0 word a good moring good a'
str1=lines.split(' ')
print(str1)
print(set(str1))
list1=list(set(str1))
list1.sort()
print(list1)

输出:
['hell0', 'word', 'a', 'good', 'moring', 'good', 'a']
{'a', 'moring', 'good', 'hell0', 'word'}
['a', 'good', 'hell0', 'moring', 'word']

6. 将n进制转化为十进制int( x, base=10 )

将二进制转化为十进制数字。此处使用int(x,base=10),第一个x可以是数字字符串或者数字,后面base表明前面的x是多少进制

7. 字典的get方法

dic.get( key, default=None),其中key为要查找的键,default如果指定的键不存在,就返回该默认值。存在就返回键对应的值。

9. re.search( pattern, string, flags=0 )函数

字符串匹配函数,可与re.findall对比学习。第一个参数是匹配的模式字符串,第二个为传入的字符串,第三个flag为标志位,控制匹配方式,如是否区分大小写等。

(1)匹配想要的字符串

匹配字符串可以是单个字符,也可以是字符串,返回的是起始位置,查询到第一个满足条件的返回下表,不再继续查询

import re
str1='123@#$sddcSD'
n1=re.search('[a-z]',str1)
n2=re.search('[%$#]',str1)
n3=re.search('ddc',str1)
print(n1)
print(n2)
print(n3)

输出:
<re.Match object; span=(6, 7), match='s'>
<re.Match object; span=(4, 5), match='#'>
<re.Match object; span=(7, 10), match='ddc'>

(2)匹配若干个字符串,使用+

注意此时span( start, end )表示符合的开始和中止位置,group表示符合的字符串。都是找到第一个符合要求的就返回。

import re
str1='123@#$sddcSD12'
n1=re.search('[a-z]+',str1)
n2=re.search('[%$#]+',str1)
n3=re.search('\d+',str1)
n4=re.search('\D+',str1)
print(n1.group())
print(n3.span())
print(n4.span()[0])
print(n4.span()[1])

输出:
sddc
(0, 3)
3
12

(3)匹配一长串,按元素类型顺序

匹配先是小写字母,接数字,再接小写字母的字符串,同时使用group来选择匹配第几个要素的。group()与group(0)等价,都是全匹配。

import re
str1='kj123acbSD12'
rex_compile=re.compile('([a-z]*)([0-9]*)([a-z]*)')
rex=rex_compile.search(str1)
print(rex)
print(rex.group())
print(rex.group(0))
print(rex.group(1))
print(rex.group(2))

输出:
<re.Match object; span=(0, 8), match='kj123acb'>
kj123acb
kj123acb
kj
123

总结:

(1)re.search函数从头开始寻找,找到第一个符合的,就可以直接返回下标

(2)findall函数找到所有符合的字符串,以列表形式返回

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值