小甲鱼——元组和字符串

本文详细介绍了Python中的元组和字符串概念,包括元组的定义、语法、不可变性、切片、方法如count和index,以及字符串的功能如回文判断、字符串处理方法、查找、替换、判断字符属性和字符串操作等。
摘要由CSDN通过智能技术生成

一.元组

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)  以字符串为参数,指定的分割符为依据进行分割,并将切割后的结果返回一个三元组,三元组就是三个元素的元组

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值