【蟒蛇】6、数据容器之元组-学Python黑马程序员个人笔记

  1. 参考视频
  2. 元组的定义和操作
  3. 元组的定义和操作案例

参考视频

黑马程序员python教程,8天python从入门到精通

元组的定义和操作

# 元组同列表一样,都是可以封装多个、不同类型的元素在内。
# 最大的不同点在于:元组一旦定义完成,就不可修改。
# 只读数据,需要再程序内封装数据,又不希望封装的数据被篡改,适合元组。

# 定义元组
t1 = (1, 'hello', True)
t2 = ()
t3 = tuple()
print(f't1的类型是:{type(t1)}, 内容是:{t1}')
print(f't1的类型是:{type(t2)}, 内容是:{t2}')
print(f't1的类型是:{type(t3)}, 内容是:{t3}')
"""
t1的类型是:<class 'tuple'>, 内容是:(1, 'hello', True)
t1的类型是:<class 'tuple'>, 内容是:()
t1的类型是:<class 'tuple'>, 内容是:()
"""

# 定义单个元素的元组,需要加个逗号
t4 = ('hello')
print(f't4的类型是:{type(t4)},内容是:{t4}')
"""
t4的类型是:<class 'str'>,内容是:hello
"""
# 以上少个逗号

t4 = ('hello',)
print(f't4的类型是:{type(t4)},内容是:{t4}')
"""
t4的类型是:<class 'tuple'>,内容是:('hello',)
"""

# 元组的嵌套
t5 = ((1, 2, 3), (4, 5, 6))
print(f't5的类型是:{type(t5)},内容是:{t5}')
"""
t5的类型是:<class 'tuple'>,内容是:((1, 2, 3), (4, 5, 6))
"""

# 下标索引去取出内容
num = t5[1][2]
print(f'从嵌套元组中取出的数据是:{num}')
"""
从嵌套元组中取出的数据是:6
"""

# 元组的操作,index查找方法
t6 = ('传智教育', '黑马程序员', 'Python')
index = t6.index('黑马程序员')
print(f'在元组t6中查找黑马程序员,的下标是:{index}')
"""
在元组t6中查找黑马程序员,的下标是:1
"""

# 元组的操作,count的统计方法
t7 = ('传智教育', '黑马程序员', '黑马程序员', '黑马程序员', 'Python')
num = t7.count('黑马程序员')
print(f'在元组t7中统计黑马程序员,的数量有:{num}')
"""
在元组t7中统计黑马程序员,的数量有:3
"""

# 元组的操作,len函数统计元组元素数量
t8 = ('传智教育', '黑马程序员', '黑马程序员', '黑马程序员', 'Python')
num = len(t8)
print(f'在元组t8中元素的数量有:{num}个')
"""
在元组t8中元素的数量有:5个
"""

# 元组的遍历:while
index = 0      # 初始值为0
while index < len(t8):
    # 通过index变量取出对应下标的元素
    print(f'元组的元素:{t8[index]}')
    # 至关重要,将循环变量(index)每一次循环都+1
    index += 1
"""
元组的元素:传智教育
元组的元素:黑马程序员
元组的元素:黑马程序员
元组的元素:黑马程序员
元组的元素:Python
"""

# 元组的遍历:for
for element in t8:
    print(f'元组的元素:{element}')
"""
元组的元素:传智教育
元组的元素:黑马程序员
元组的元素:黑马程序员
元组的元素:黑马程序员
元组的元素:Python
"""

# 不能修改元组内容
t8[0] = 'cast'
"""
TypeError: 'tuple' object does not support item assignment
"""

# 特例:但元组内列表list内容可以变
t9 = (1, 2, ['heima', 'cast'])
print(f't9的内容是:{t9}')
t9[2][0] = '黑马程序员'
t9[2][1] = '传智教育'
print(f't9的内容是:{t9}')
"""
t9的内容是:(1, 2, ['heima', 'cast'])
t9的内容是:(1, 2, ['黑马程序员', '传智教育'])
"""

"""
以下内容来源于菜鸟教程
"""
# 不需要括号也可以
tup1 = 'Google', 'noob', 1997, 2000
print(type(tup1))  # 输出为:<class 'tuple'>

# 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)  # (12, 34.56, 'abc', 'xyz')

# 返回元组中元素最大值。
tuple2 = ('5', '4', '8')
num = max(tuple2)
print(num)  # 8

# 返回元组中元素最小值。
tuple2 = ('5', '4', '8')
num = min(tuple2)
print(num)  # 4

# 将可迭代系列转换为元组。
list1 = ['Google', 'Taobao', 'noob', 'Baidu']
tuple1 = tuple(list1)
print(tuple1)  # ('Google', 'Taobao', 'noob', 'Baidu')

# 关于元组是不可变的
# 所谓元组的不可变指的是元组所指向的内存中的内容不可变。
tup = ('r', 'u', 'n', 'o', 'o', 'b')
tup[0] = 'g'  # 不支持修改元素
#  TypeError: 'tuple' object does not support item assignment

print(id(tup))  # 查看内存地址:4440687904
tup = (1, 2, 3)
print(id(tup))  # 查看内存地址:4441088800
# 内存地址不一样了
# 从以上实例可以看出,重新赋值的元组 tup,绑定到新的对象了,不是修改了原来的对象。

元组的定义和操作案例

# 定义一个元组,内容是:('周杰轮',11,[football,'music'])
# 记录的是一个学生的信息(姓名、年龄、爱好)
# 请通过元组的功能(方法),对其进行
# 1.查询其年龄所在的下标位置
# 2.查询学生的姓名
# 3.删除学生爱好中的football
# 4.增加爱好:coding到爱好list内

message = ('周杰伦', 11, ['football', 'music'])
index = message.index(11)
print(f'查询其年龄所在的下标位置是:{index}')
# 下标索引去取出内容
name = message[0]
print(f'查询学生的姓名是:{name}')
del message[2][0]
print(f'删除学生爱好中的football后的内容是:{message}')
message = ('周杰伦', 11, ['football', 'music'])
message[2][0] = 'coding'
print(f'增加爱好:coding到爱好list内后:{message}')

# 如果代替的话可以,但是原来message再增加coding怎么做?
# 增加爱好:coding到爱好list内,GPT结果如下
message = ('周杰伦', 11, ['football', 'music'])
message = (message[0], message[1], message[2] + ['coding'])
print(f'增加爱好:coding到爱好list内后:{message}')
"""
查询其年龄所在的下标位置是:1
查询学生的姓名是:周杰伦
删除学生爱好中的football后的内容是:('周杰伦', 11, ['music'])
增加爱好:coding到爱好list内后:('周杰伦', 11, ['coding', 'music'])
增加爱好:coding到爱好list内后:('周杰伦', 11, ['football', 'music', 'coding'])
"""

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 3415226167@qq.com
资源 相册