python菜鸟的进阶路之元组(元组没有sort排序)

1、什么是元组

  • python内置数据结构之一,为不可变数据序列,不可进行增删改操作
  • 可以存储任意数据类型
  • 列表与元组最本质的区别就是一个是可变,一个为不可变。外在区别,列表用[] ,而元组用()

问:为什么将元组设置为不可变类型?
在这里插入图片描述

  • 多任务:很多人同时去操作这块数据(增删改)。
  • 加锁:一个人在对数据进行更改的时候,对数据内容进行锁住,不允许其他人进行修改。

2、元组的创建

(1)第一种创建方式

 t = (1,1.2,True,'star')
    print(t)
    print(type(t))

运行结果:
在这里插入图片描述
也可以不加括号:(如果只有一个元素,不加括号不就是字符串类型了???)

t = 'nae','bvk','svbjn'
print(t,type(t))

运行结果:
在这里插入图片描述
如果只有一个元素,我们给它加括号能保证它是元组类型嘛?

t = ('python')
print(type(t))

运行结果:
在这里插入图片描述

这就说明:
在这里插入图片描述

t = ('python',)  ###注意加了“,”号
print(type(t))

运行结果:
在这里插入图片描述

(2)利用内置函数tuple创建:

###必须加括号
a= tuple(('nae','bvk','svbjn'))
print(a,type(a))

内置函数:
在这里插入图片描述
(3)间接修改元组

元组本身是不可变数据类型,但如果元组里面包含可变数据类型,此时便可间接修改元组的内容,而且列表的地址也不变

t1 = ([1,2,3],'4')
###列表是可以添加元素的
t1[0].append(4)
print(t1)

运行结果:
在这里插入图片描述

3、元组的6大特性

(1)索引

#定义元组
allowUsers = ('root','westos','redhat')

#索引(和列表索引一样)
print(allowUsers[0])
print(allowUsers[-1])

运行结果:
在这里插入图片描述
( 2).切片

 #定义元组
allowUsers = ('root','westos','redhat')
#输出所有元素
print(allowUsers[:])
#输出除了第一个元素以外的所有元素,因为索引为1开始,所以不包括0即第一个元素
print(allowUsers[1:])
#输出除了最后一个元素以外的所有元素
print(allowUsers[:-1])
#逆序输出
print(allowUsers[::-1])

运行结果:
在这里插入图片描述
3).重复

#定义元组
allowUsers = ('root','westos','redhat')
#重复打印3print(allowUsers * 3)

运行结果:
在这里插入图片描述
( 4).连接

#定义元组
allowUsers = ('root','westos','redhat')
#加号表示连接
print(allowUsers + ('linux','python'))

运行结果:
在这里插入图片描述
各元组直接相加

name1 = 'linux','python','cc','java'
name2 = 'bakc','ffgwer','ferv'
name3 = ('vbsk',)
print(name1+name2+name3)

运行结果:
在这里插入图片描述
(5).成员操作符

#定义元组
allowUsers = ('root','westos','redhat')
#判断元素是否在元组中
print('westos' in allowUsers)
print('westos' not in allowUsers)
print('linux' in allowUsers)

运行结果:
在这里插入图片描述
6).元组的遍历(迭代)

#定义元组 
allowUsers = ('root','westos','redhat')
for user in allowUsers:
    print(user)

运行结果:
在这里插入图片描述
同时列出索引和数据:

#定义元组
allowUsers = ('root','westos','redhat')
#enumerate:同时列出数据和数据下标
for index,user in enumerate(allowUsers):
print('第%d个白名单用户: %s' % (index+1,user))

运行结果:
在这里插入图片描述

4、元组的常用方法

(1).count方法:查看某一元素出现的次数

#定义元组
t = (1,1.3,True,'westos','westos')
#count: 指定字符出现的次数
print(t.count('westos'))

运行结果:
在这里插入图片描述
(2).index方法:查看某一元素的索引

#定义元组
t = (1,1.3,True,'westos','westos')
#index: 返回指定字符对应的索引值
print(t.index(1.3))

运行结果:
在这里插入图片描述

5、元组的应用场景

(1).变量交换数值

    a = 1
    b = 2
    b,a = a,b
    print(a,b)
    
    #执行过程:
    #1).先把(a,b)封装成一个元组(1,2)
    #2).b,a=a,b  <--->  b,a=(1,2)
    #<---->  b = (1,2)[0] ,  a = (1,2)[1]

运行结果:
在这里插入图片描述
(2).打印变量的值

name  = 'westos'
age = 11
t = (name,age)
print('name:%s , age:%d' %(name,age))
print('name:%s , age:%d' %(t))

运行结果:
在这里插入图片描述(3).元组的赋值

#有多少个元素,就用多少个变量接收
t = ('westos',17,100)
name,age,score = t
print(name,age,score)

运行结果:
在这里插入图片描述

模拟评委打分制度

需求:

评委打分标准: 去掉一个最高分和一个最低分,求平均分

代码:

#1).定义元组
score = (100,88,97,65,47)

#2).排序
#sorted: 升序
scores = sorted(score)
print(scores)

#3).分离最大值和最小值,剥离出中间值; *表示多个
minscore,*middlescore,maxscore = scores

print(minscore)
print(middlescore)
print(maxscore)

#4)中间值求平均值
average = sum(middlescore) / len(middlescore)

print('最终成绩为: %.2f' % average)

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值