目录
一.数据容器-元组
思考:列表是可以修改的。 如果想要传递的信息,不被篡改,列表就不合适了。
元组同列表一样,都是可以封装多个、不同类型的元素在内。 但最大的不同点在于: 元组一旦定义完成,就不可修改 所以,当我们需要在程序内封装数据,又不希望封装的数据被篡改,那么元组就非常合适了
- 元祖定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
- 如果元组中只有一个元素,必须加逗号,为了和其他类型的数据作区分,否则就会类型错误
- tuple_1 = (10),这个是int类型. tuple_1 = (10,) ,这个是元组类型
tuple1 = (1, '白', True, [0, 3, 6]) # 定义元祖,支持嵌套
print(tuple1)
t1 = tuple1.index('白') # 查找'白'在元祖中的下标序号
print(t1)
t2 = tuple1.count('白') # 统计'白'在元祖中出现的次数
print(t2)
t3 = len(tuple1) # 统计元祖中共有多少元素
print(t3)
'''
(1, '白', True, [0, 3, 6])
1
1
4
'''
二.元组的遍历循环
同列表一样,元组也可以被遍历。 可以使用while循环和for循环遍历它
tuple1 = (1, '白', True, [0, 3, 6]) # 定义元祖
# while循环遍历元祖
index = 0
while index < len(tuple1):
print(tuple1[index])
index += 1
# for循环遍历元祖
for i in tuple1:
print(i)
'''
1
白
True
[0, 3, 6]
1
白
True
[0, 3, 6]
'''
三.元组的特点
经过上述对元组的学习,可以总结出元组有如下特点:
- 可以容纳多个数据
- 可以容纳不同类型的数据(混装)
- 数据是有序存储的(下标索引)
- 允许重复数据存在
- 不可以修改(增加或删除元素等)
- 多数特性和list一致,不同点在于不可修改的特性。
tuple1 = (1, '白', True, [0, 3, 6])
tuple1[3][0] = 1 # 可以改元组里面的列表,但改后的类型也要一样的东西
tuple1[3][1] = '白' # 类型也不能变
# tuple1[0] = 1
# tuple1[1] = 1报错,元组不可修改
# tuple1[2] = 1
print(tuple1)
print(id(tuple1)) # 2290386637904数据的内存地址
'''id()可以查看数据的内存地址'''
四.数据容器-字符串
1.字符串定义与下标索引
- 尽管字符串看起来并不像:列表、元组那样,一看就是存放了许多数据的容器。 但不可否认的是,字符串同样也是数据容器的一员。字符串是字符的容器,一个字符串可以存放任意数量的字符。
- 和其它容器如:列表、元组一样,字符串也可以通过下标进行访问 从前向后,下标从0开始
- 从后向前,下标从-1开始 同元组一样,字符串是一个:无法修改的数据容器,如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改。
name1 = 'baibaideweijie'
print(name1[0])
print(name1[-1])
print(name1.index('j')) # 查找特定字符串j的下标索引值
'''
输出结果:
b
e
11
'''
2.字符串的替换
语法:字符串.replace(字符串1,字符串2) 功能:将字符串内的全部:字符串1,替换为字符串2 注意:不是修改字符串本身,而是得到了一个新字符串哦
name1 = 'baibaideweijie'
name2 = name1.replace('de', '的') # 把'de'换成'的'
print(name2)
print(name1)
'''
baibai的weijie
baibaideweijie
'''
可以看到,字符串name1本身并没有发生变化,而是得到了一个新字符串对象
3.字符串的分割
语法:字符串.split(分隔符字符串) 功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中 注意:字符串本身不变,而是得到了一个列表对象
name3 = '白 白 的 wei jie'
name4 = name3.split(' ') # (' ')指定空格字符为中间,左右进行分割成多个字符串
print(name3) # 白 白 的 wei jie
print(name4) # ['白', '白', '的', 'wei', 'jie']
'''可以看到,字符串按照给定的 <空格>进行了分割,分割处前后变成多个子字符串,并存入一个列表对象中。
'''
name5 = name3.split('的') # 从指定字符开始分割,左右两侧被分成单独的字符串
print(name5) # ['白 白 ', ' wei jie']
4.统计字符串中某字符的出现次数
语法:字符串.count(字符串)
name3 = '白 白 的 wei jie'
print(name3.count('白')) # 统计name3中白的出现次数,2次
5.统计字符串的总长度
语法:len(字符串),数字字母符号中文均被算作是一个字符
name6 = '12345abcdee白白的wj.+=;-*'
print(len(name6)) # 数字字母符号中文均被算作是1个字符,共22个
6.字符串的特点
作为数据容器,字符串有如下特点:
- 只可以存储字符串
- 长度任意(取决于内存大小)
- 支持下标索引
- 允许重复字符串存在
- 不可以修改(增加或删除元素等)
- 支持遍历循环 基本和列表、元组相同
- 不同与列表和元组的在于:字符串容器可以容纳的类型是单一的,只能是字符串类型。
- 不同于列表,相同于元组的在于:字符串不可修改
五.综合练习题目
1.元组练习:索引查找
tuple1 = ('one,two', '12', '三,四,五,六') a. 计算元组长度并输出 b.获取元组第2个元素并输出 c.获取元素第3个元素中的最后一个元素并输出 d.使用for循环遍历输出第1个元组中的元素
tuple1 = ('one,two', '12', '三,四,五,六')
print(len(tuple1))
print(tuple1[1])
print(tuple1[2][-1])
for i in tuple1[0]:
print(i)
'''
输出结果:
元祖长度为3
第二个元素为12
第三个元素中的最后一个一个元素,六
遍历循环第一个元祖
o
n
e
,
t
w
o
'''
2.字符串练习题 :开发敏感词语过滤程序
1、开发敏感词语过滤程序,提示用户输入内容,如果正常发言则打印用户输入的内容,
如果用户输入的内容中包含不优雅的
如 “cnm” , “tmd” 则将内容替换为***,并提醒用户
a = input('请输入优雅的语言:')
a1 = a.replace('cnm', '***').replace('tmd', '***')
if a == 'cnm' and 'tmd':
print(f'监测到{a1}是不文明用语,系统自动屏蔽')
else:
print(a)