python数据结构(二):tuple(元组)

本文详细介绍了Python中的元组,包括定义、访问、操作和遍历等基本概念。通过实例展示了元组的创建、下标索引、切片、拼接、count和index函数的使用。此外,还探讨了元组的不可变性,并提供了一个销售数据统计的综合案例,演示如何在实际问题中应用元组进行数据分析。
摘要由CSDN通过智能技术生成
一、定义元组

上篇文章我们知道了字符串是一种序列,它可以迭代循环,也可以按索引访问,也可以切片访问。但它的组成只能是单个的字符,现在来介绍一种更多元化的序列:元组,英文叫tuple

1.1、定义元组
t = ('My', 'age', 'is', 18)

在这个元组中包含了3个字符串,一个整形数字,元组中的每一项称作元素,4个元素按照从左到右的顺序排列

1.2、用下标索引访问
t[0] # 'my'
t[3] = t[-1] # 18

也可以通过切片来访问,注意切片返回的是一个包含切片片段的新元组

t[0:2] # ('My', 'age')

在这里插入图片描述

1.3、不用括号定义元组
t = 'My', 'age', 'is', 18

但当,元组中只有一个元素的时候,必须要加一个逗号

t = ('solo',# 或者不带括号
t = 'solo',
1.4、序列强制转换为元组
tuple('abc') # ('a', 'b', 'c')
tuple(range(5)) # (0, 1, 2, 3, 4)

在这里插入图片描述

二、元组操作
2.1、元组拼接

函数join(),可以把元组这样的序列拼接成一个整体的字符串

t1 = ('My', 'age', 'is', 29)
" ".join(t1)
## 报错
t2 = ('My', 'age', 'is', "29")
" ".join(t2)
## 结果 'My age is 29'

在这里插入图片描述

注意最后一个元素,这次我们将它设置成了字符串,因为join函数要求参数序列中的每一个元素都必须是字符串

2.2、元组函数
2.2.1、count,index 函数

count() 函数 统计元组内相关元素的个数

index() 函数 返回相关元素的下标值,如果有相同的元素,返回下标最小

t = ('a', 'b', 'b', 'c')
t.count('a') # 2
t.index('b') # 1
t.index('d') # Error
# 查看长度
len(t) # 4

在这里插入图片描述

2.2.2 元组也支持 in 操作
t = ('a', 'a', 'b', 'c')

'a' in t # True
'x' in t # False

注意:元组和字符串都是只读的,也就是不可修改的。我们不能单独改变元组中的某个元素,或者是字符串中的某个字符

三、遍历元组
3.1、使用for循环遍历
lst = list(range(10))
for i in lst:
    print(i)
3.2、使用while循环遍历
lst = list(range(10))
i = 0
while i < 10:
    print(lst[i])
    i += 1
四、综合案例:销售数据统计-销冠

在真实的项目中,数据结构通常是比较复杂,经常碰到嵌套的元组,甚至是多层嵌套,我们来看一个例子

这是包含某公司所有销售人员第一季度销售业绩的元组,单位是万元,其中的每一个元素对应一个销售 人员的信息,人员信息也是一个元组,包括姓名和业绩,业绩又是一个元组,按照顺序分别是1、2、3 月份的销售额。

需求:找出总销售额最高的那个员工,并将他的名字和总销售额输出

# 当元组元素较多、较长时,可以这样书写
sales = (
    ("Peter", (78, 70, 65)),
    ("John", (88, 80, 85)),
    ("Tony", (90, 99, 95)),
    ("Henry", (80, 70, 55)),
    ("Mike", (95, 90, 95)),
)
4.1、方式一
champion = '' # 冠军名称
max_amount = 0 #最大销量
for sale in sales:
    name = sale[0]
    quarter_amount = sale[1]
    total_amount = 0
    for month_amount in quarter_amount:
        total_amount += month_amount
    if total_amount > max_amount:
        max_amount = total_amount
        champion = name
print("第一季度的销冠是%s, 他的总销售额是%d万元" % (champion, max_amount))
## 结果: 第一季度的销冠是Tony, 他的总销售额是284万元
4.2、方式二
champion = '' # 冠军名称
max_amount = 0 #最大销量
for name,quarter_amount in sales:
    total_amount = sum(quarter_amount)
    if total_amount > max_amount:
        champion,max_amount = name,total_amount
print("第一季度的销冠是%s, 他的总销售额是%d万元" % (champion, max_amount))
## 结果: 第一季度的销冠是Tony, 他的总销售额是284万元
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值