|NO.Z.00015|——————————|BigDataEnd|——|Hadoop&Python.v15|——|Arithmetic.v15|语法:数据结构&元组tuple.V2|

一、元组 tuple:定义元组
~~~     # 现在我们知道了字符串是一种序列,它可以迭代循环,也可以按索引访问,也可以切片访问。但它的组成只能是单个的字符,现在来介绍一种更多元化的序列:元组,英文叫tuple,可这样来定义一个元组:
t = ('My', 'age', 'is', 18)

~~~     # 在这个元组中包含了3个字符串,一个整形数字,元组中的每一项称作元素,4个元素按照从左到右的顺序排列。可以用下标索引访问:
t[0] # 'my'
t[-1] # 18
~~~     # 也可以通过切片来访问,注意切片返回的是一个包含切片片段的新元组。
t[0:2] # ('My', 'age')

~~~     # 事实上元组定义的时候也可以不用括号
t = 'My', 'age', 'is', 18
~~~     # 但当,元组中只有一个元素的时候,必须要加一个逗号:
t = ('solo',)
     
~~~     # 或者不带括号
t = 'solo',
~~~     # 可以将一个序列强制转换为元组  
~~~     # 后面的逗号表明这是一个元组,否则就会被认为是一个字符串。

tuple('abc') # ('a', 'b', 'c')
tuple(range(5)) # (0, 1, 2, 3, 4)
二、元组操作
~~~     # 现在我们介绍字符串的另一个函数join,有了它,可以把元组这样的序列拼接成一个整体的字符串。
~~~     # 注意最后一个元素

t = ('My', 'age', 'is', "18")
print(" ".join(t))
~~~     # 输出结果:'My age is 18'
~~~     # 注意最后一个元素,这次我们将它设置成了字符串,因为join函数要求参数序列中的每一个元素都必须是字符串。
~~~     # 和字符串一样,元组也有count, index函数,使用的方法也是一样:

t = ('a', 'b', 'b', 'a')
t.count('a') # 2
t.index('b') # 1
t.index('c') # Error
# 查看长度
len(t) # 4
~~~     # 元组也支持 in 操作,想要判断元组中是否包含某个元素:

'a' in t # True
'x' in t # False
~~~     # 最后,需要记住的是元组和字符串都是只读的,也就是不可修改的。我们不能单独改变元组中的某个元素,或者是字符串中的某个字符。
三、遍历元组
~~~     # 元组属于序列,所以可以像字符串那样去遍历它:

lst = ('a', 'b', 'c', 'd', 'e')
for i in lst:
print(i)
~~~     # 使用for循环可以方便快捷的遍历元组,上面的例子将打印出元组中的每一个元素。也可以使用while来遍历元组,虽然并不经常这样使用。

lst = list(range(10))
i = 0
while i < 10:
print(lst[i])
i += 1
四、综合案例:销售数据统计-销冠
~~~     # 在真实的项目中,数据结构通常是比较复杂,经常碰到嵌套的元组,甚至是多层嵌套,我们来看一个例子:
~~~     # 当元组元素较多、较长时,可以这样书写

sales = (
("Peter", (78, 70, 65)),
("John", (88, 80, 85)),
("Tony", (90, 99, 95)),
("Henry", (80, 70, 55)),
("Mike", (95, 90, 95)),
)
~~~     # 这是包含某公司所有销售人员第一季度销售业绩的元组,单位是万元,其中的每一个元素对应一个销售人员的信息,人员信息也是一个元组,包括姓名和业绩,业绩又是一个元组,按照顺序分别是1、2、3月份的销售额。需求:找出总销售额最高的那个员工,并将TA的名字和总销售额输出。

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, TA的总销售额是%d万元" % (champion, max_amount))
~~~     # 上面的代码也可进一步优化一下,使得代码行数更少,结构更简单。

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, TA的总销售额是%d万元" % (champion, max_amount))
~~~     # 这里用到了一个sum函数,它是Python内置函数,可以计算出一个序列里所有数值的总和。

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(25)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示