第四章: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())           # True

#判断words是不是以“太阳”子串开头
print(words.startswith("太阳"))    # True
#判断words是不是以“Sun”子串开头
print(words2.startswith("Sun"))   # False

#判断words是不是以“笑”子串结尾
print(words.endswith("笑"))      # True

拆开与重组

  • split(“,”),以逗号切分子串,形成一个列表
  • join(),用分隔符连接子串,主语为分隔符,参数为字符串
    例如:
words = "hello,world,hello,python"
#将字符串words用“,”分割成四个字符串
print(words.split(","))

words2 = "我爱你中国"
#将字符串打散为字符,并以-连接形成新字符串
print("-".join(words2))

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

第二节:元组

元组的特点

  • 元组是一种有序不可编辑的元素容器;
  • 可以通过下标访问元组中的元素;
  • 其它迭代器对象(如列表、字符串等)可以通过类型强转转换为元组对象;

创建元组

  • 通过( )直接赋值创建
  • 将多个值赋值给一个变量,则该变量是元组类型
    例:
#直接使用括号可创建元组
mtuple = ()
print(type(mtuple))

#元组可以通过括号直接赋值,值的类型可以多样化(整形、浮点型、字符串、复数等)
mtuple2 = (1, 1.2, True, "hello", 3 + 4j, None)
print(mtuple2)

#将多个值赋值给一个变量,则该变量是元组类型
ytuple = 1, 1.2, True, "hello", 3 + 4j, None
print(ytuple,type(ytuple))

#指定变量个数形成的元组,可直接找到指定变量
ytuple2 = width, height = 300, 400
print(ytuple2,type(ytuple2))
print(width)

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

第三节:列表

第四节:集合

第五节:字典

第六节:

第七节:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章