超方便的Python函数(一)

《疯狂Python讲义》从变量类型、列表、元组、函数、类和对象,各种内置模块、包,数据库、网络、并发编程,数据可视化、爬虫都有涉及,打基础练操作进阶一条龙。


字符串

(1)分割、拼接

  • split(): 将字符串按指定分割符分割成多个短语
s = 'crazyit.org is a good site'
#使用空白对字符串进行分割
print(s.split()) #输出['crazyit.org', 'is', 'a', 'good', 'site']
#使用空白对字符串进行分割,最多只分割前两个单词
print(s.split(None, 2)) #输出['crazyit.org', 'is', 'a good site']
#使用点进行分割
print(s.split('.'))#输出['crazyit', 'org is a good site']
  • join():将多个短语连接成字符串
mylist = s.split()
#使用'/'作为分割符,将 mylist 连接成字符串
print('/'. join(mylist)) #输出 crazyit.org/is/a/good/site
#使用','作为分割符,将 mylist 连接成字符串
print(','.join(mylist)) #输出 crazyit.org,is,a,good,site

(2)大小写转换

  • title():将每个单词的首字母改为大写
  • lower():将整个字符串改为小写
  • upper(): 将整个字符串改为大写
a = 'our domain is crazyit.org'
#每个单词的首字每大写
print(a.title())
#每个字母小写
print(a.lower())
#每个字母大写
print(a.upper())

#运行上面程序,可以看到如下输出结果.
Our Domain Is Crazyit.Org
our domain is crazyit.org
OUR DOMAIN IS CRAZYIT.ORG

(3)删除

str还提供了如下常用的方法来删除空白或者指定字符
  • strip(): 删除字符串前后的空白或者指定字符
  • lstrip():删除字符串前面(左边)的空白或者指定字符
  • rstrip(): 删除字符串后面(右边)的空白或者指定字符
s = ' this is a puppy '
#删除左边的空白
print(s.lstrip()) 
#删除右边的空白
print(s.rstrip()) 
#删除两边的空白
print(s.strip())
#再次输出s,将会看到 s 并没有改变
print(s)

#下面代码示范了删除 字符串前后指定宇符 的功能
s2 = 'i think it is a scarecrow'
#删除左边的i、t、o、w 字符
print(s2.lstrip('itow'))
#删除右边的i、t、o、w字符
print(s2.rstrip('itow'))
#删除两边的i、t、o、w字符
print(s2.strip('itow'))

(4)查找、替换

  • find(): 查找指定子串在字符串中出现的位置,如果没有找到指定子串 ,则返回-1
  • index(): 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发 ValueError 错误
  • replace(): 使用指定子串替换字符串中的目标子串
s = 'crazyit.org is a good site'
#查找 s 中 ’org’ 出现的位置
print(s.find('org')) # 8
#查找 s 中 ’org’出现的位置
print(s.index('org')) # 8

#将字符串中的所有 it 替换成 xxxx
print(s.replace('it','xxxx')) #crazyxxxx is a good sxxxxe
#将字符串中 1 个 it 替换成 xxxx
print(s.replace('it','xxxx', 1)) # crazyxxxx is a good site

列表

(1)索引

l = ['crazyit', 20, 5.6, 'fkit', -17]
#访问第 1 个元素
print(l[0]) # crazyit
#访问第 2 个元素
print(l[1]) # 20
#访问倒数第 2 个元素
print(l[-2]) # fkit
使用索引获取中间一段 ,这种用法被称为slice (分片或切片)
slice的完整语法格式如下:[start: end: step]
begin:切片开始位置,默认为0
end:切片结束位置,默认为列表长度
step:切片间隔
a_list = ['crazyit', 20, 5.6, 'fkit', -17]

#访问从第 2 个到第 4 (不包含)的所有元紊
print(a_list[1:3]) # [20,5.6]

#访问从倒数第 3 个到倒数第 1 (不包含) 的所有元素
print(a_list[-3:-1]) # [5.6,'fkit']

#访问从第 2个到倒数第 2(不包含)的所有元素
print(lla_list1:-2]) # [20,5.6]

#访问第135个元素(间隔为2print(a_list[0:4:2]) # ['crazyit',5.6,-17]

(2)操作元素

  • 增加
a_list = ['crazyit', 20, -2]
#追加元素
a_list.append('fkit')
print(a_list) # ['crazyit', 20, -2, 'fkit']

#追加列表,列表被当成一个元素
a_list.append([’a’,’b'])
print(a_list) # ['crazyit', 20, -2'fkit', [’a’,’b’]]
  • 删除
a_list=['crazyit', 20, 2.4,(3,4),'fkit'] 
#删除第 3 个元素
del a_list[2]
print(a_list) # [’crazyit’, 20, (3, 4),’f kit’] 
#删除第 2 个到第 4 (不包含〉元素
del a_list[1:3]
print(a_list) # ['crazyit', 'fkit']

b_list = list(range(1, 10))
#删除第 3 个到倒数第 2 (不包含)元素,间隔为 2 
del b_list[2: -2 : 2]
print(b_list) # [1, 2, 4, 6, 8, 9] 
#删除第 3 个到第 5 (不包含)元素,间隔为 2
del b_list[2 : 4]
print(b_list) # [1, 2, 8, 9]

c_list = [20,'crazyit', 30, -4, 'crazyit', 3.4]
#删除第一次找到的 30
c_list.remove(30)
print(c_list) # [20, 'crazyit', -4, 'crazyit', 3.4]
del、remove、clear均可对列表进行删除
  • 修改
a_list = [2, 4, -3.4, 'crazyit', 23)
#对第 3 个元素赋值
a_list[2] ='fkit'
print(a_list) # [2, 4, 'fkit', 'crazyit', 23]
#对倒数第 2 个元素赋值
a_list[-2] = 9527
print(a_list) # [2 , 4, 'fkit', 9527, 23]

b_list = list(range(1, 5))
print(b_list) # [1, 2, 3, 4]
#将第 2 个到第 4 (不包含)元素赋值为新列表的元素 
b_list[1: 3] = ['a','b']
print(b_list) # [1, 'a', 'b', 4]

#将第 2 个到第 4 (不包含)元素赋值为空列表,就是删除元素
b_list[2: 4] = []
print(b list} # [1, 4]

(3)常用方法

  • dir
>>>dir(list)
输出:
['append','clear','copy','count','extend','index','insert','pop','remove','reverse','sort']
  • reverse

实现列表翻转

a_list = list(range (1, 8))
#将 a_list 列表元素反转
a_list.reverse()
print(a_list) # (7, 6, 5, 4, 3, 2, 1)
  • sort
a_list= [3, 4, -2, -30, 14, 9.3, 3.4]
#对列表元素排序
a_list.sort()
print(a_list) #[-30, -2, 3, 3.4, 4, 9.3, 14]

b_list = ['Python', 'Swift', 'Ruby', 'Go', 'Kotlin', 'Erlang'] 
#对列表元素排序,默认按字符串包含的字符的编码来比较大小
b_list.sort()
print(b_list) # ['Erlang', 'Go', 'Kotlin', 'Python', 'Ruby', 'Swift']

常用操作

  • ASCII码转换
# ASCII66
print(chr(66)) # B
# AASCIIprint(ord('A')) # 65
  • 英文字母判断
s = 'I am Chinese!'
# 如果string中字母都是小写,则返回 True,否则返回False
print(s.islower()) # False
# 如果string中字母都是大写,则返回 True,否则返回False
print(s.isupper()) # False
# 如果string中单词首字母都是大写,则返回 True,否则返回False
print(s.istitle()) # False
  • 数字字符判断
a = '15'
# 如果 string 只包含数字则返回 True 否则返回 False.
print(a.isdigit()) # True
  • 组合字符判断
ss = 'no1'
# 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
print(ss.isalpha()) # False

就我自己而言,上面的join()、split()、strip()、replace()、reverse()、sort()、切片等方法使用频率都挺高,处理各种数据极其优秀。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值