python数据结构:tuple(元组)
Posted Hub-Link
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python数据结构:tuple(元组)相关的知识,希望对你有一定的参考价值。
一、定义元组
上篇文章我们知道了字符串是一种序列,它可以迭代循环,也可以按索引访问,也可以切片访问。但它的组成只能是单个的字符,现在来介绍一种更多元化的序列:元组,英文叫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万元
以上是关于python数据结构:tuple(元组)的主要内容,如果未能解决你的问题,请参考以下文章