一、字符串剩余:(均为了解)
1、find,rfind,index,rindex,count
index与find的使用一样,不同在于find若未找到会返回-1,index未找到直接报错。尽量用find来操作,保护软件的稳定性。
x = "hello egon egon egon"
res=x.find("egon")
print(res)
res=x.find("egon123") # -1代表没有找到
print(res)
----------------------------------
6
-1
res=x.rfind("egon")
print(res)
---------------------------
16
res=x.find("egon",0,3)
print(res)
------------------------------
-1
res = x.index("egon123") # 找不到则报错
print(res)
----------------------------------------------
res = x.index("egon123") # 找不到则报错
ValueError: substring not found
2、center,ljust,rjust,zfill
x = "yang"
res=x.center(50,'*')
print(res)
-----------------------------------------------------------------
***********************yang***********************
print(x.ljust(50,"*"))
print(x.rjust(50,"*"))
print(x.zfill(50))
print(x.rjust(50,"0"))
----------------------------------------------------------------------------
yang**********************************************
**********************************************yang
0000000000000000000000000000000000000000000000yang
0000000000000000000000000000000000000000000000yang
3、expandtabs
print("hello\tworld".expandtabs(1))
------------------------------------
hello world
4、captalize,swapcase,title
print("hello world".capitalize()) # 使第一个字符大写
print("aBcDeF".swapcase()) # 大小写发转
print("hello world".title()) # 每个单词的首字母大写,若一些英文文章的题目有这方面的格式要求
---------------------------------
Hello world
ABcdEFg
Hello World
5、is其他
name='egon123'
print(name.isalnum()) #字符串是否由字母或数字组成
print(name.isalpha()) #字符串是否只由字母组成
name="aaainputbbbbb"
print(name.isidentifier()) # 如果字符串是有效标识符,则 isidentifier() 方法返回 True,否则返回 False。
name="abc123"
print(name.islower()) # 判断字符串是否全小写
print(name.isupper()) # 判断字符串是否全小写
name=" "
print(name.isspace()) # 判断字符串是否全空格
name="My Name Is Egon"
print(name.istitle()) # 判断字符串是否符合标题格式
6、is数字系列
# 在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
#1、 isdigit判断是否为纯数字字符串(浮点型因为有小数点,不算纯数字)
# bytes、unicode可判断为True,中文与罗马数字判断为False
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
-------------------------------------
True
True
False
False
#2、isnumeric检测变量是否为数字或数字字符串
# unicode、中文数字、罗马数字判断为True,bytes类型无此方法
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
#3、isdecimal 判断字符串是否只有十进制字符串组成这种方法只存在于unicode对象,注意:定义一个十进制字符串,只需要在字符串前添加 'u' 前缀即可。
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
字符串型总结:
1.存一个值
2.有序
3.不可变类型
二、列表类型,list型
1.用途:按照索引存放多个值,可存放任意类型,索引反映位置
2.定义:在[ ]内用逗号分割开多个任意类型的元素
l = [1,2,'hello',[3,4]]
数据类型转换:
res1=list("hello")
print(res1)
res2=list({"k1":1,"k2":2,"k3":3})
print(res2)
-------------------------------------
['h', 'e', 'l', 'l', 'o']
['k1', 'k2', 'k3']
3.常用操作与内置方法:
3.1 优先掌握的操作:
1、按索引存取值(正向存取+反向存取):即可以取可以改值,不能加值
l1 = [11,22,33,44,55]
print(l1[0])
print(l1[-1])
print(id(l1))
l1[0] = 100
print(id(l1))
l1[4] = 11111
--------------------------
11
55
1133439007104
1133439007104
2、切片(顾头不顾尾,步长)
l1 = [11,22,[66,77]]
res=l1[2:4]
print(res)
print(l1)
2.1 浅copy:了解
l2=l1[:]
l2=l1.copy()
print(id(l1[0]),id(l1[1]),id(l1[2]))
print(id(l2[0]),id(l2[1]),id(l2[2]))
l1[0] = "aaa"
l1[1] = "bbb"
l1[2] = "ccc"
l1[2][0] = 8888
print(l2)
from copy import deepcopy
l3=deepcopy(l1)
print(id(l3[0]),id(l3[1]),id(l3[2]))
l1[2][0]=6666
print(l1)
print(l3)
# 示范1:
l1[0]=1000
print(l1)
print(l2)
# 示范2:
l1[-1][0]=666
print(l1)
print(l2)
# 了解:
res=l1[-1:-4:-1]
res=l1[::-1]
print(res)

3、长度
l1 = [11,22,[66,77]]
print(len(l1))
4、成员运算in和not in
l1 = [111,22,[66,77]]
print([66,77] in l1)
print(66 in l1)
print(66 not in l1)
5、追加
方法一、append,在列表最后追加元素,且括号内会被视为一个元素,若加入列表,则直接追加列表,不会取出列表中的值再追加
l1=[11,22]
l1.append(33)
l1.append(44)
l1.append([55,66])
--------------------------------
[11, 22, 33, 44, [55, 66]]
方法二、insert在指定位置加入元素,将原来位置的元素挤到后一个位置
l1 = [11,22,[66,77]]
l1.insert(0,'新元素')
print(l1)
-----------------------------
['新元素', 11, 22, [66, 77]]
l1 = [11,22,[66,77]]
l1.insert(1,'新元素')
print(l1)
----------------------------------
[11, '新元素', 22, [66, 77]]
6、删除
6.1 万删除,没有返回值,代表的是单纯的删除
l1=[11,22,[33,44]]
del l1[0]
print(l1)
del l1[1]
print(l1)
-----------------------------
[22, [33, 44]]
[22]
6.2 指定元素删除,不是按照索引删除,返回值为None(代表无返回值),代表的是单纯的删除
l1=[11,22,[33,44]]
res = l1.remove(11) # 指定11这个元素删除,不是按照索引删除
print(res)
print(l1)
----------------------------------
None
[22, [33, 44]]
6.3 指定索引删除,有返回值,代表的是取走操作
l1=[11,22,[33,44]]
res = l1.pop(0)
print(res) # 返回值是自己取走的元素
print(l1)
--------------------------
11
[22, [33, 44]]
7、循环
l1=[11,222,[1,2]]
for x in l1:
print(x)
3.2 需要掌握的操作:
1、clear,全清空
l1=[11,22,333,333,333,]
l1.clear()
print(l1)
2、count,计算某个字符出现次数
l1=[11,22,33,33,33]
print(l1.count(33)) # 计算33这个字符出现了几次
------------------
3、extend,有l1,l2两个列表,将l2列表的元素取出加入l1中
方法一、直接用extend
l1 = [11,22,33]
l2 = [44,55,66]
l1.extend(l2)
print(l1)
------------------------
[11, 22, 33, 44, 55, 66]
方法二、用for循环,将l2的值取出来,再用append追加
l1 = [11,22,33]
l2 = [44,55,66]
for i in l2:
l1.append(i)
print(l1)
------------------------
[11, 22, 33, 44, 55, 66]
4.列表类型index方法使用:list.index(x[, start[, end]]),顾头不顾尾
l1=[11,22,33,33,33,44]
res1=l1.index(33,0,2) # 直接报错,在索引0-2(不包括2)中没有33元素
res2=l1.index(44)
print(res2)
----------------------------------
5
5.reverse:列表反转
面试题
让列表反转的两种方法:
方法一、使用reverse
l1=[11,22,"aaa",'bbb']
l1.reverse()
方法二、利用列表切片
l1=l1[::-1] # 两个:不能省略
print(l1)
6.sort 排序,默认从小到大,中间加入reverse=True可变成从大到小
字符串与整型之前无法比较,可以比较整型与浮点型,字符串与字符串可以比较
字符串与整型无法比较
# l1 = [11, 22, "aaa", 'bbb']
l1 = [11, 22, 1.2, 3.3]
l1.sort() # 返回值为None
print(l1)
------------------------------------
[1.2, 3.3, 11, 22]
字符串之间比较
l1 = ['aa', '220', 'b', 'nn']
l1.sort()
print(l1)
-------------------------------
['220', 'aa', 'b', 'nn']
4、列表类型总结
1.存多个值
2.有序
3.可变类型
三、元组类型
元组相当于一个不可变的列表,除了不能存,取的操作同列表一样
1、用途: 按照索引存放多个任意类型的值,索引反应的是位置/顺序
2、定义方式:在()内用逗号分隔开多个任意类下的值/元素
强调:当元组内只有一个元素时,必须加逗号
错误方式
t=(10)
print(type(t))
----------------
<class 'int'>
正确方式
t=(10,)
print(type(t))
--------------------------
<class 'tuple'>
3、常用操作+内置的方法
优先掌握的操作:
1、按索引取值(正向取+反向取):只能取
t=(10,1.1,"aaa",[11,22])
print(t[0])
----------------------
10
2、切片(顾头不顾尾,步长)
t=(11,22,33,44,55)
print(t[0:3]) # 取0,1,2三个索引的值
---------------------
11,22,33
3、长度
t=(11,22,33,44,55)
print(len(t))
4、成员运算in和not in
t=(11,22,33,44,55)
print(11 in t)
5、循环
for x in t:
print(x)
4、元组类型总结:
1.存多个值
2.有序
3.不可变类型
四、字典类型
1、用途:按key:value的形式存放多个任意类型的value,key反映的是value的属性
因为字典的key是不能重复的,所以我们也可以利用这个特点来去重
2、定义方式:在{}内用逗号分隔开多个key:value,其中value可以是任意类型
而key必须是不可变的类型,通常是字符串类型,若key为可变类型,会报错显示unhashable
d={'k1':111,'k1':222,'k1':3333} # key重复,只保留一个
print(d)
# 生成字典
d=dict(x=1,y=2,z=3)
print(d)
类型转换
l=[("name","egon"),("age",18),["gender","male"]]
res=dict(l)
print(res)
# 空字典
d={}
print(type(d))
快速构造字典,此处可能容易出面试题,尤其注意创建的value是可变类型时候,向value加值会使得所有key对应的value都加上值
dic = {}.fromkeys(['name','age','sex'],None)
print(dic)
dic1 = {}.fromkeys('hello',None)
print(dic1)
-------------------------------------------
{'name': None, 'age': None, 'sex': None}
{'h': None, 'e': None, 'l': None, 'o': None} # 在此处我们就可以看到,字典的key是不能重复的,hello中有两个l,此处只有一个l的key,所以可以利用字典去重
3、常用操作+内置的方法
优先掌握的操作:
1、按key存取值:可存可取
若key存在就取值,如不存在就加值,取值最好用get方法
d={'k1':111}
print(d['k1'])
d['k2']=222
print(d)
2、长度len
d={'k1':111,'k2':222}
print(len(d))
3、成员运算in和not in
d={'k1':111,'k2':222}
print('k1' in d)
print(111 in d)
4、删除
6.1 del:万能删除,没有返回值,代表的是单纯的删除
d={'k1':111,'k2':222}
del d['k1']
print(d)
6.2 popitem:随机删,返回一个元组
d = {'k1':111,'k2':222,'k3':333}
res = d.popitem()
print(d,res)
-----------------------
{'k1': 111, 'k2': 222} ('k3', 333)
6.3 pop:指定key删除,有返回值,代表的是取走操作
d={'k1':111,'k2':222}
res=d.pop('k1')
print(d)
print(res)
-----------------------------
{'k2': 222}
111
5、键keys(),值values(),键值对items() 与for循环
d = {'k1':111,'k2':222,'k3':333}
for key in d.keys():
print(key,end=' ')
print()
for value in d.values():
print(value,end=' ')
print()
for k,v in d.items():
print(k,v)
---------------------------------
k1 k2 k3
111 222 333
k1 111
k2 222
k3 333