第四章:Python容器

概述

什么是容器?

容器是用于盛放元素的
由于盛有许多的元素,容器都是可以迭代遍历的
最常用的容器包括【元组】、【列表】、【字典】、【集合】等
字符串是有序字符集,本质上也是容器
我们在对比和讨论容器的特性时,最常考虑的因素有:
1、是否有序
2、是否可重复
3、如何访问其中的元素
4、是否可以编辑
5、如何遍历

第一节:字符串

字符串操作符

  • +,用于字符串连接
  • *,用于多次重复
    例如:
words = "sun"
words2 = "moon"

print(words + words2)
print(words * 3)

执行结果:
在这里插入图片描述

字符串长度

如果我们想知道一段字符串到底有多长,可以用len()进行查看,而不是一个一个数
例:

#这里有26个字母,或者更多时,使用len()
words = "abcdefghijklmnopqrstuvwxyz"
print(len(words))

#字符串的长度,包含了空格在内
words2 = "I love you"
print(len(words2))

执行结果:
在这里插入图片描述

比较字符串大小

字符串之间的比较,是按当前字符集中序号的顺序排列,前小后大

print("abc" > "def")  # False,按当前字符集中序号的顺序排列
print("中国" > "美帝")  # False,按当前字符集中序号的顺序排列

字符串截取(切片)

字符串[开始位置:结束位置:步长]
开始结束位置的原则是:含头不含尾,即结束位置的那个字符不会被截取
步长2代表每2个取第一个,3代表每三个取第一个
步长为-N时,代表从后向前截取,仍然是每N个取一个

例如:

mstr = "getsomething"

# 从0载取到总长度(最后)
print(mstr[0:len(mstr)])

#从0截取到第5位(注意含头不含尾,所以以6做结束)
print(mstr[0:6])

#从0截取到倒数第4位
print(mstr[0:-3])

#从第5位截取到最后
print(mstr[5:])

#从0截取到第4位
print(mstr[:5])

#从头截到尾
print(mstr[:])

#从0截取到最后,步长为2
print(mstr[0::2])

#从头截到尾,步长为-2
print(mstr[::-2])

执行结果:
在这里插入图片描述

判断有无子串

  • 使用 in 关键字可以判断子串是否在大串中
  • 使用 find 函数返回子串出现的位置,如子串不存在则返回-1
  • 使用 index 函数同样返回子串位置,但子串不存在就会报错
    例如:
mstr = "天下武功唯快不破"

#"武功"是否在mstr里面
print("武功" in mstr)     # True
#"武术"是否在mstr里面
print("武术" in mstr)     # False

#在mstr里寻找"不破"
print(mstr.find("不破"))    # 6
#在mstr里寻找"武术"
print(mstr.find("大破"))    # -1

#在mstr里出现""武功的下标是?
print(mstr.index("武功"))    # 2
print(mstr.index("武术"))    #此方法找不到会报错

字符串的格式化

  • capitalize(),首字母大写
  • title(),每个单词的首字母大写
  • lower(),全小写
  • upper(),全大写
    例如:
mStr = "hello world,hello python"

#字母全大写
print(mStr.upper())
#字母全小写
print(mStr.lower())
#所有单词首字母大写
print(mStr.title())
#仅开头首字母大写
print(mStr.capitalize())

执行结果:
在这里插入图片描述

编码解码

  • encode(),编码为字节
  • decode(),将字节解码为字符串,注意主语是字节而非字符串
    例如:
#例1
words = "太阳当头照,花儿对我笑"

#以gbk字符集编码将字符串编码为字节数组
wordBytes = words.encode(encoding="gbk")
print(wordBytes)

#以gbk字符集编码将字节数组解码为字符串
turnBytes = wordBytes.decode(encoding="gbk")
print(turnBytes)


print("——"*20)#此处只为分隔2:
words2 = "早起的鸟儿有虫吃"

#以utf-8字符集编码将字符串编码为字节数组
wordBytes2 = words2.encode(encoding="utf-8")
print(wordBytes2)

#以utf-8字符集编码将字节数组解码为字符串
turnBytes2 = wordBytes2.decode(encoding="utf-8")
print(turnBytes2)

执行结果:
在这里插入图片描述

搜索与替换

  • find(),寻找子串位置,没有返回-1
  • index(),寻找子串位置,没有报错
  • count() ,统计子串出现次数
  • replace(),替换子串为新的字符串
    例如:
mStr = "太阳当头照,花儿对我笑,太阳不见了"

#搜索“花儿”的位置
print(mStr.find("花儿"))

#搜索出现“花儿”的下标
print(mStr.index("花儿"))

#搜索“flower”的位置,-1表示子串不存在
print(mStr.find("flower"))

#搜索出现“flower”的下标位置,注意当子串不存在,将会报错,而不是返-1
# print(mStr.index("flower"))    # ValueError: substring not found

print("——————————————————————————————————")#此处只为分隔

#将“太阳”替换为Sun,替换1处
print(mStr.replace("太阳", "Sun", 1))

#将全部“太阳”替换为“Sun”
print(mStr.replace("太阳", "Sun"))  # fuck world,fuck python 全部hello替换为fuck

print("——————————————————————————————————")#此处只为分隔

#数一数子串“太阳”出现的次数
print(mStr.count("太阳"))

#在0-6位字符中,子串“太阳”出现的次数
print(mStr.count("太阳", 0, 6))  # 1 hello子串出现的次数,范围为0-6位字符

执行结果:
在这里插入图片描述

判断头尾与数字

  • isdigit(),判断是否为数字子串
  • startswith(),判断是否以子串开头
  • endswith(),判断是否以子串结尾
    例如:
words = "太阳当头照,花儿对我笑"
words2 = "3145926"

#判断words是不是数字字符串
print(words.isdigit())            # False
#判断words2是不是数字字符串
print(words2.isdigit())           
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值