一.元组
1.元组既能像序列一样,同时容纳多种类型的对象,也拥有字符串不可变的特性。
2.从语法来区别元组和列表
列表用的是方括号,元组用的则是圆括号。
rhyme = (1,2,3,4,5,'上山打老虎')
rhyme
这就是一个元组,这段代码的返回值就是:(1,2,3,4,5,‘上山打老虎’)
但是!其实元组也可以不用带括号,去掉上面代码的括号之后,它的返回值就是一样的。
元组只需要用逗号隔开就可以了。
2.元组也可以通过下标来获取元素。
rhyme = (1,2,3,4,5,‘上山打老虎’)
rhyme[0]
那么这段代码的返回值就是1
3.注意:元组它是不可变的,不可以修改元组的内容。这样python就会报错
rhyme = [1,2,3,4,5,'上山打老虎']
rhyme[1] = 10
这样的话,python就会报错
4.元组的切片操作
切片的含义:将目标对象中的元素,以某种特定的组合导出,而非修改对象本身,
元组切片用法和列表一样,比如
rhyme = [1,2,3,4,5,'上山打老虎']
rhyme[::2]
那么这段代码的返回值就是(1,3,5)
还可以利用切片把元组倒过来
rhyme = [1,2,3,4,5,'上山打老虎']
rhyme[::-1]
5.元组的两个方法:count和index方法
count:用来确定一个元素在一个元组当中的个数
nums = (3,1,9,6,8,3,5,3)
nums.count(3)
这段代码的返回值就是3
index:用来获得元组当中一个元素的下标索引值
6.元组的拼接和重复
拼接:
s = (1,2,3)
t = (4,5,6)
s + t
这段代码的返回值就是(1,2,3,4,5,6)
重复:
s = (1,2,3)
s * 3
这段代码的返回值就是(1,2,3,1,2,3,1,2,3)
7.元组的嵌套
嵌套就是加个逗号即可,逗号是构成元组的基本条件,直接举例
s = (1,2,3)
t = (4,5,6)
w = s,t
那么这段代码的返回值就是:((1,2,3),(4,5,6))
8.元组的迭代
for each in s:
print(each)
这段代码的返回值就是:
1
2
3
那么对于嵌套的元组,我们相应的使用嵌套的循环:
for i in w:
for each in i:
print(each)
1
2
3
4
5
6
9.元组当中的列表推导式
s = (1,2,3,4,5)
[each*2 for each in s]
返回值就是[2,4,6,8,10]
10.元组的打包和解包
打包:
t = (123,'FishC',3.14)
print(t)
这段代码的返回值就是(123,'FishC',3.14) 这个就是把他们放在一个元组当中,这就叫打包
解包:将他们一次性赋值给三个变量
x,y,z = t
print(x)
print(y)
print(z)
这段代码的三个结果分别是:
123
‘FishC’
3.14
这个行为,不仅仅适用与元组,也适用于任何的序列类型,列表,字符串
#注意#在解包的时候,赋值号左边的变量名数量,必须跟右侧序列的元素数量一致
11.元组的元素怎么改
s = [1,2,3]
t = [4,5,6]
w = (s,t)
print(w)
#w就是:([1,2,3],[4,5,6])
w[0][0] = 0
print(w)
结果就是:([0,2,3],[4,5,6])
这就是元组中的元素是指向一个可变的列表 ,那么我们依然可以修改列表里面的内容。
二.字符串
1.我们可以利用字符串实现“是不是回文数"的题
回文数就是正着读和反着都是一样的结果
x = "12345"
"是回文数" if x = x[::-1] else"不是回文数"
那么这段代码的返回值就是“不是回文数”
2.capitalize方法
:将字符串的首字母变成大写,其他字母变成小写
x = "I love FishC"
x.capitalize()
这段代码的返回值就是“I love fishc”
但是由于元组是不能改变的,所以他只是根据规则,创建了一个新的字符串,此时你再去打印这个列表x,依旧是原来的样子。
3.casefold方法
作用:返回一个所有字母都是小写的新字符串
x = "I love FishC"
x.casefold()
这段代码的返回值就是:“i love fishc”
4 .title方法
作用:会将字符串当中的每个单词的首字母全部变成大写,该单词的所有其他字母全部就是小写
x = "I love FishC"
x.title()
5.swapcase
作用:是将字符串中的所有字母大小写翻转,大写变小写,小写变大写
x = "I love FishC"
x.swapcase()
这段代码的返回值就是“i LOVE fISHc”
6.upper
作用:是将所有的字母变成大写,
7.lower
作用:是将所有的字母变成小写
#lower和 casefold区别#
lower,只能处理英文字母,casefold除了可以处理英语以外,还可以处理更多其他语言的字符,,比如德语,
8.字符串的左中右对齐
center(width,fillchar='') ljust(width,fillchar='')
rjust(width.fillchar='') zfill(width)
这四个方法都要求有一个width参数,用来指定字符串的宽度,如果指定的宽度小于或者等于源字符串的宽度,那就不会对齐,直接源字符串输出就可以了。
写一段测试字符串
首先是:center方法
他会让代码居中
x= ="有内鬼,停止交易!"
x.center(5)
此时我们传入的字符串要比原来的那个字符串要小,那么此时,这段代码的返回值就是源字符串直接输出
那么当我们传入的是15
x= ="有内鬼,停止交易!"
x.center(15)
此时这段代码的返回值就是:“ 有内鬼,停止交易! ” 这样子左右去用空格进行填充
接下来是ljust方法
他会让代码实现左对齐
x= "有内鬼,停止交易!"
x.ljust(15)
那么这段代码的返回值就是:“有内鬼,停止交易! ”
其次就是rjust
会让代码实现右对齐
x= "有内鬼,停止交易!"
x.rjust(15)
那么这段代码的返回值就是:“ 有内鬼,停止交易!
最后是zfill
他让代码实现在前面用0填补空格
x= "有内鬼,停止交易!"
x.zfill(15)
那么这段代码的返回值就是:“000000000有内鬼,停止交易!”
zfill还有这种用法
"520",zfill(5)
#打印结果就是“00520”
#还可以加负号
“-520”.zfill(5)
#打印结果就是“-0520”
这四个用法还可以这样子,就是在后面再加一个变量,这样子就会用这个变量去填补空格
x.center(15,"淦")
这段代码的返回值就是“淦淦淦有内鬼,停止交易!淦淦淦”
其他三个同理
三.字符串的几个功能
查找
count(sub[,start[,end]])
find
rfind
index
rindex
1.count方法
用于查找功能,查找sub参数指定的子字符串,在字符串中出现的次数
x = "上海自来水来自上海"
x.count("海")
这段代码是在查找海在源字符串当中出现了几次,那么很显然,这段代码的返回值就是:2
count方法有两个可选参数:star和end
用于指定查找的起始和结束位置
x = "上海自来水来自上海"
x.count("海",0,5)
那么这段代码的返回值就是:1
2.find(sub[,start[,end]])
rfind(sub[,start[,end]])
用于定位sub参数指定的子字符串在字符串当中的索引下标值
他们的区别就是:前者是从左往右赵,后者则是从右往左找
x.find("海")
返回值就是1
x.rfind("海")
返回值就是7
3.index(sub[,start[,end]])
rindex(sub[,start[,end]])
方法跟find的两个方法很相似
区别就是:
如果定位不到子字符串,那么处理方式就是不一样的
x.find("龟")
#返回值就是-1,rfind也是返回-1
#但是如果在这里使用index
那么他会抛出异常
替换
1.expandtabs([tabsize=8])
是使用空格来替换制表符,并且呢,返回一个新的字符串
注意:一段代码里面不能混合使用tab和空格,这是个很不好的习惯
比如:演示一下就是:
cod ="""
print("I love FishC")
print("i love my wife")
new_code = code.expandtabs(4)#设置了tab的缩进是多少,我设置的是4
print(new——code)
#这段代码的返回值就是:
print = ("i love FishC")
print = ("i love my wife")
count参数
指定的是替换的次数,它参数的默认值是-1,也就是说你不设置这个参数的话,那么它就相当于替换全部
举个例子
"在吗!,我在你家楼下,快点下来!!",replace("在吗","想你")
#打印出来的结果就是:
"想你!我在你家楼下,快点下来!!"
"translate"方法
返回一个根据table参数转换后的新字符串,这个参数的名字叫table,是表格的意思,用于指定一个转换规则的表格
我们需要用str.maketrans(x[,y[,z]])这个方法来获取这个表格
table = str.maketrans("ABCDEFG","1234567")
"i love FishC".translate(table)
#这段代码的返回值就是"i love 6ish3"
str.maketrans(x[,y[,z]])这个方法还支持第三个参数,就是将指定的字符串给忽略。
table = str.maketrans("ABCDEFG","1234567 love")
"i love FishC".translate(table)
#那么这段代码的返回值就是
'i 6ish3'
四.判断和检测
1.startswith(prefix[,start[,end]])
这个方法用于判断这个参数指定的子字符串,是否出现在字符串的起始位置
x = "我爱python"
x.startswith("小甲鱼")
#返回值就是False
x.startswith("我")
#返回值就是True
2.endswith()
用于判断这个参数指定的子字符串,是否出现在字符串结束的位置
x.endswith("python")
#返回true
x.endswith("py")
#返回false
1,2这两个方法的参数需要注意的是:
发现这个参数里有个方括号,那说明,这是一个可选参数,他就相当于这个函数或者方法的一个高级定制版本,我们如果给他赋值的话,就会有新的特性出现,比如
x = "我爱python"
x.startswith("我",1)
#返回值就是false
原因呢就是后面这个1的意思就是这个索引值为1的这个元素开始匹配的
并且,这两个函数,他们的参数呢,其实是支持以元组的形式传入多个待匹配的字符串的,
x = "她爱python"
if x.startswith(("你","我","她")):
print("总有人喜爱python")
#返回true
你这个元组当中你可以匹配任何你觉得有可能匹配成功的元素进去,只要有一个成功,那么他就会返回true
3.istitle
判断一个字符串当中所有单词,是否以大写字母开头,其余字母均为小写
x = "I love Python"
x.istitle()
这个代码的返回值是Fslse
但是如果love的l大写,就会返回true
4.isupper
可以判断字符串当中的所有元素是否是大写
x = "I love Python"
x.isupper
#返回值就是false
5.在一个语句当中连续调用多个方法
x.upper().isupper()
在一个语句当中连续调用多个方法,python是从左往右依次进行调用的,python先调用upper将字符串全体成员换成大写字母的新字符串,然后我们调用isupper()方法来进行判断
6.isalpha
判断一个字符串当中是否只有字母构成
x = "I love Python"
x.isalpha()
#这段代码的返回值就是:false
因为空格不是字母
7.isspace
判断一个字符串是否为空白字符串
" \n"
#返回值是true
因为\n表示换行
8.isprintable
判断字符串中所有字符是否都可以打印
"i love fishc\n"
#这个的返回值就是false
因为这个里面的\n她是转义字符,是不可以被打印的
9.isdecimal
isdigit
isnumeric()
都是用来判断数字的
十进制数字
x = "12345"
x.isdecimal()
#返回true
x.isdigit()
#返回true
x.isnumer()
#返回true
这里面还可以换次方,换罗马数字,换中文数字,返回的结果就是不一鸭哥的,说明这三个检测数字的机制都有自己的尺度和范围
10.isalnum
它就是isdecimal isalpha isdigit isnumeric 这些方法当中只要任意一个返回true,那么结果都是true
11.isidentifier
用于判断这个字符串是否是一个合法的python标识符
"i am a good gay ".isidentifier()
#返回值就是false
原因就是有空格
如果把空格都替换成下划线,那么返回的就是true
"FishC520".isidentifier()
#返回true
注意:标识符不能以数字开头
如果你想判断一个字符串是否为python的保留标识符,比如if for while 这些关键字,
我们可以使用keyword模块的iskeyword
import keyword
keyword。iskeyword("if")
#返回值就是true
五.截取
strip(chars = None)
lstrip(chars = None)
rstrip(chars = None)
removprefix(prefix)
removesuffix(suffix)
1.lstrip(chars = None) 代码左侧没有空白
" 左侧无空白".lstrip()
#返回值就是"左侧无空白"
同理rstrip则是代码右侧无空白
注意strip他是两侧都无空白
" 你好 ".strip()
#返回的值就是"你好"
2.lstrip(chars = None)
这里面这个“chars”参数,它去除的是空白,这个参数可以传入一个字符串
"www.lovefishc.com".lstrip(wcom.)
#这段代码的返回值就是"ilovefishc.com"
3.removprefix(prefix)删除代码的前缀
removesuffix(suffix)删除代码的后缀
"www.i love fishc.com".removesnffix(com)
#返回的结果就是:"www.i lovefishc"
拆分和拼接
1.拆分字符串
partition(sep) rpartition(sep) 以字符串为参数,指定的分割符为依据进行分割,并将切割后的结果返回一个三元组,三元组就是三个元素的元组