《疯狂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]
#访问第1、3、5个元素(间隔为2)
print(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码转换
# ASCII码 66
print(chr(66)) # B
# A的ASCII码
print(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()、切片等方法使用频率都挺高,处理各种数据极其优秀。