本文已参与「新人创作礼」活动,一起开启掘金创作之路。
切片
对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
格式:序列名[开始位置的下标:结束位置的下标:步长]
注意:
如果不写开始,默认从0下标开始
不写结束,默认选取到最后
不写步长,默认从1开始
如果开始和结尾都不写,表示选取所有
编辑
注意:
分片操作只包含位于起始索引号位置的元素,不包含位于终止索引号位置的元素;
同时,起始和终止的意义都是针对于从左向右的顺序来定义的
#使用切片获取多个元素
In [1]: s="abcdefg"
In [2]: s[0:3]
Out[2]: 'abc'
使用步长
步长就是每数几个取一个的意思——(如果步长为2,每数两个取一个)
步长是正数时,是从左向右开始操作
步长是负数时,是从右向左操作
查找
find():检测某个子串是否包含在这个字符中,如果在返回这个子串开始的位置下标,否则返回-1。
1、语法
字符串序列.find(子串,开始位置下标,结束位置下标)
注意:开始和结束下标可以省略,表示在整个字符串序列中查找。
index(): 检测某个子串是否包含在这个字符中,如果在返回这个子串开始的位置下标,否则报错
2、语法
字符串序列.index(子串,开始位置下标,结束位置下标)
count(): 返回某个子串在字符中出现的次数
3、语法
字符串序列.count(子串,开始位置下标,结束位置下标)
name = 'gyq123456'
print(name.find('2',3,6)) #4 不存在返回-1
print(name.index('5')) #7 不存在报错
print(name.count('2')) #1 返回0
替换
replace()
name = 'my name is gyq gyq gyq'
# 将gyq替换为GG
rename = name.replace('gyq','GG')
print(rename)
# 还可以加长替换的数量 默认全部替换
rename = name.replace('gyq','GG',3)
print(rename)
分割
split() ——返回一个列表,丢失分隔符
list = name.split() #括号选取什么字符作为分隔符
print(list)
合并
join() ——合并列表里面的字符串数据为一个大字符串
mylist = ['aa','bb','cc']
#aa...bb...cc
new_str = '-'.join(mylist) #连接符'_'可以换成其他任意字符
print(new_str)
大小写转换
capitalize(): 将字符串第一个字符转换成大写,其余都是小写
mystr = "gyq is Bu Ti fou"
print(mystr.capitalize()) #Gyq is bu ti fou
title(): 将字符串每个单词首字母转换成大写
mystr = "gyq is tu ti fou"
print(mystr.title()) #Gyq Is U Ti Fou
lower(): 将字符串中大写转小写
mystr = "gyQ Is bu ti ASD"
print(mystr.lower()) #gyq is bu ti asd
upper(): 将字符串中小写转大写
mystr = "gyq is bu ti asd"
print(mystr.upper()) #GYQ IS BU TI ASD
删除空白字符
lstrip():删除左侧空白字符
mystr = " gyq "
print("这是原始的",mystr)
new_str = mystr.lstrip()
print(f"这是删除左侧空白字符的{new_str}")
rstrip():删除右侧空白字符
new_str1 = mystr.rstrip()
print(f"这是删除左侧空白字符的{new_str1}")
strip():删除左右两侧空白字符
new_str2 = mystr.strip()
print(f"这是删除左侧空白字符的{new_str2}")
字符串对齐
格式:字符串序列.左或右或居中对其(长度,填充字符)
mystr = 'hello'
mystr.ljust(10,'.') #左对齐,定义长度,以点填充
'hello.....'
mystr.rjust(10,'.') #右对齐,定义长度, 以点填充
'.....hello'
mystr.center(10,'.') #居中对其, 定义长度,以点填充
'..hello...'
判断:
返回的结果是布尔型数据类型:True或False
startwith(): 检查字符串是否以指定子串开头,如果设置开始和结束位置下标,则在指定范围内检查。
语法
字符串序列.startswith(子串,开始位置下标,结束位置下标)
mystr = "HEeel worlsd and acabnv"
print(mystr.startswith('HEeel'))
endswith(): 检查字符串是否以指定子串结尾,如果设置开始和结束位置下标,则在指定范围内检查。
语法
字符串序列.endswith(子串,开始位置下标,结束位置下标)
mystr = "HEeel worlsd and acabnv"
print(mystr.endswith('v'))
isalpha(): 判断字符串中是否都是字母
print(mystr.isalpha()) #字符串中全部都是字母则返回True。
mystr = "HEeelworlsdandacabnv"
print(mystr.isalpha())
isdigit(): 判断字符串中是否都是数字
print(mystr.isalpha()) #字符串中全部都是数字则返回True。
mystr = "HEeelworlsdandacabnv1"
print(mystr.isdigit())
isalnum(): 判断字符串中都是字母或者数字,也可以是数字和字符组合。
print(mystr.isalnum())
mystr = "HEeelworlsdandac123abnv"
print(mystr.isalnum())
isspace(): 判断字符串中只包含空白
print(mystr.isspace())
mystr = " "
print(mystr.isspace())
列表中的函数
1.语法
列表序列.index(数据,开始位置下标,结束位置下标)
index(): 返回指定数据所在位置的下标——如果查找的数据不存在则报错。
name_list = ['TOM','gyq','GGG']
print(name_list.index('TOM'))
count(): 统计指定数据在当前列表中出现的次数
name_list = ['TOM','gyq','GGG','TOM','TOM']
print(name_list.count('TOM'))
len(): 访问列表长度,即列表中数据的个数
name_list = ['TOM','gyq','GGG','TOM','TOM']
print(len(name_list))
判断是否存在
in: 判断指定数据在某个列表序列,如果在返回True, 否则返回False
name_list = ['Tom','Lily','Rose']
print('Tom' in name_list) #True
#结果:False
print('gyq' in name_list) #False
还可以使用 not in: 判断指定数据不在某个列表序列,如果不在在返回True, 否则返回False
name_list = ['Tom','List','ROSE']
name = input('请输入您要注册的用户名:')
if name in name_list:
print("您输入的用户名已存在,请重新输入")
else:
print("用户名可用")
列表增加数据到结尾——append()
如果追加的是一个序列,则会将整个序列添加到列表中。
name_list = ['Tom','Lily','ROSE']
print("原始数据",name_list)
name_list.append(['xiaoming'])
print("增加数据",name_list)
列表为可变数据类型
extend()—如果数据是一个序列,则将这个序列的数据逐一添加到列表中。
name_list = ['Tom','Lily','ROSE']
name_list.extend(['xiaoming','123'])
print("增加数据",name_list)
insert():指定位置新增数据
name_list = ['Tom','Lily','ROSE']
name_list.insert(0,['xiaoming','123'])
print("增加数据",name_list)
删除
1、语法:
del 目标
2、快速体验
2.1 删除列表
name_list = ['Tom','Lily','Rose']
del name_list #或者del (name_list)
print(name_list) #name 'name_list' is not defined
3、删除指定的数据
name_list = ['Tom','Lily','Rose']
del name_list[0] #或者del (name_list)
print(name_list)
pop() -- 删除指定下标的数据,如果不指定下标,默认删除最后一个数据
返回被删除的数据
name_list = ['Tom','Lily','Rose']
del_name=name_list.pop()
print(del_name)
remove(数据) #括号里面需要添加要删除的数据
name_list = ['Tom','Lily','Rose']
name_list.remove('Tom')
print(name_list)
修改列表数据
# 1.修改指定下标是的数据
name_list = ['Tom','Lily','Rose']
# 1.修改指定下标是的数据-先找到下标元素然后重新赋值
name_list[0] = 'aaa'
print(name_list)
将列表元素逆序显示
# 2.逆序
list = [1,3,2,5,6,8,]
list.reverse()
print(list)
排序
sort()
语法:列表序列.sort(key=None,reverse=False)
注意:reverse表示排序规则,reverse=True降序,reverse=False升序(默认)
将列表元素排好序——默认升序排序
# 3.sort
list = [1,3,2,5,6,8,]
list.sort()
print(list)
降序——sort(reverse=True)
list = [1,3,2,5,6,8,]
list.sort(reverse=True)
print(list)
复制
copy()
name_list = ['TOM','LILY','ROSE']
list1 = name_list.copy()
print(list1)
print(name_list)
列表循环遍历
while
list = ['gyq','gyq1','gyq2']
i = 0
while i < len(list):
print(list[i])
i += 1
for
list = ['gyq','gyq1','gyq2']
for i in list:
print(i)
嵌套列表
list = [['gyq','GGG','ggg'],['历经','娜扎','仙女'],['小红','小明','小路']]
print(list[0][0]) #list[0]相当于普通列表的序列名
嵌套案例
import random
teachers = ['A','B','C','D','E','F','G','H']
offices = [[],[],[]]
for name in teachers:
num = random.randint(0,2)
offices[num].append(name)
i = 1
for office in offices:
print(f'办公室{i}的人数是{len(office)},老师分别是:')
for name in office:
print(name)
i += 1
元组
使用场景:存储多个数据,并且不能修改数据。——列表可以修改数据
# 定义多个数据的元组
t1 = (10,20,30)
print(t1)
print(type(t1))
# 单个数据的元组
t2 = (1.2,)
print(type(t2))
# 如果单个数据的元组不加逗号,则数据类型是它本身
t2 = (1.2)
print(type(t2))
注意:# 如果单个数据的元组不加逗号,则数据类型是它本身
index()——查找某个数据,如果存在则返回下标,否则报错
t = (1,'aa','yy','qq')
print(t.index('aa'))
count() 统计某个数据在当前元组出现的次数
t = (1,'aa','yy','qq')
print(t.count('aa'))
len() 统计元组中数据的个数
t = (1,'aa','yy','qq')
print(len(t))
修改元组里的列表数据——尽可能不修改元组里的列表数据
t = ('aa','yy','qq',['cc'])
t[3][0] = 'gyqgyqgyq'
print(t)