Python元组

                                 Python元组的操作

元组:(戴上了枷锁的列表)
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组是用小括号进行包容,元素之间通过逗号进行隔开。
当元组里只有一个元素的时候,需要加上逗号
元组中的元素可以有任意多个,并且可以是不同类型的(例如:数字、字符串、列表等):

1.创建元组

#创建空的元组
name0 = ()
print('这是一个空的元组:',name0) #输出一个空的元组
#创建一个元素的元组
name1 = (1,) #一个元素的时候要在后面加上逗号
print('这是只有一个元素的元组:',name1)
#创建多种类型的元素
name2 = (1,2,'卢阿涛',3,True)
print('这是有多个元素的元组:',name2)
#创建一个嵌套的元组
name3 = (1,[1,2,'你好',3],'luatao',(1,2,'nihao'))
print('这是一个嵌套的元组:',name3)

#元组可以不带括号
name4 = 1,2,3,'nihao'  #元组包装
print('不带括号的元组:',name4)
#元组解包
a,b,c,d= name4
print(a)
print(b)
print(c)
print(d)

输出结果:

这是一个空的元组: ()
这是只有一个元素的元组: (1,)
这是有多个元素的元组: (1, 2, ‘卢阿涛’, 3, True)
这是一个嵌套的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
不带括号的元组: (1, 2, 3, ‘nihao’)
1
2
3
Nihao

2.访问元组

访问的方式与列表是一样的,通过索引进行访问,索引必须是用中括号进行

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],'luatao',(1,2,'nihao'))
#访问第二个位置的元素
print('访问第二个位置的元素:',name0[2])
#访问第二个位置到第四个位置的元素
print('访问第二个位置到第四个位置的元素:',name0[1:4])
#访问第二个位置的元素的第一个位置的元素
print('访问第二个位置的元素的第一个位置的元素:',name0[1][0])
#访问最后一个元素的值
print('访问最后一个元素的值:',name0[-1])

输出结果:

访问第二个位置的元素: luatao
访问第二个位置到第四个位置的元素: ([1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
访问第二个位置的元素的第一个位置的元素: 1
访问最后一个元素的值: (1, 2, ‘nihao’)

3.修改元组

元组是不可变的,也就是说,元组中的元素在被赋值后不能够被改变
但是如果元素本身是一个可变数据类型,那么其嵌套项可以被改变

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],'luatao',(1,2,'nihao'))
print('初始的元组:',name0)
#name0[0] = 10 #这种操作时错误的
#元组里的可变数据类型能够被改变
name0[1][1] = 8 #将元组的第一个位置的列表的元素的第2个位置的值改为8
print('改变一次后的元组:',name0)
name0[1][2] = '卢阿涛' #将元组的第一个位置的列表的元素的第3个位置的值改为卢阿涛
print('改变二次后的元组:',name0)
#合并两个元素为一个新的元组
name1 = (1,2,3)
name2 = ('你好','卢阿涛')
name3 = name1 + name2
print('合并后的元组:',name3)

输出结果:

初始的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
改变一次后的元组: (1, [1, 8, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
改变二次后的元组: (1, [1, 8, ‘卢阿涛’, 3], ‘luatao’, (1, 2, ‘nihao’))
合并后的元组: (1, 2, 3, ‘你好’, ‘卢阿涛’)

4.删除元组

不能更改元组中的元素,这也意味着无法删除元组中的元素。
但如果元素本身是一个可变数据类型,那么其嵌套项是可以被删除的,而且使用关键字 del 可以删除整个元组:

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],'luatao',(1,2,'nihao'))
print('初始的元组:',name0)
#del name0[2] #这种操作时错误的

#元组里的可变数据类型能够被改变
del name0[1][1] #将元组的第二个位置的列表的元素的第二个位置的值删掉
print('删除一次后的元组:',name0)
del name0[1][2] #将元组的第二个位置的列表的元素的第3个位置的值删掉
print('删除二次后的元组:',name0)

#删除整个元组
del name0
print('删除整个元组后的元组:',name0)#已被删除掉,不存在,会报错

输出结果:

初始的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
删除一次后的元组: (1, [1, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
删除二次后的元组: (1, [1, ‘你好’], ‘luatao’, (1, 2, ‘nihao’))
Traceback (most recent call last):
File “C:\Users\冷月枫\Desktop\my.py”, line 13, in
print(‘删除整个元组后的元组:’,name0)
NameError: name ‘name0’ is not defined

5.元组的运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],'luatao',(1,2,'nihao'))
print('初始的元组:',name0)

#+组合运算符
name1 = name0 + (2,3)
print('组合后的元组:',name1)

#*赋值运算符
print('复制后的元组:',name0*2)

#计算一个元组的个数
print('一个元组的个数:',len(name0))

#in 判断元素是否在元组中
print(1 in name0)#1在元组里
print(1 not in name0)#1不在元组里

输出结果:

初始的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
组合后的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’), 2, 3)
复制后的元组: (1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’), 1, [1, 2, ‘你好’, 3], ‘luatao’, (1, 2, ‘nihao’))
一个元组的个数: 4
True
False

6.元组方法

可以通过dir()来查找方法列表

方法描述
index()返回第一个匹配的索引
count()统计某个元素在列表中出现的次数

元组:count/index方法都是O(n) ; 随着规模的增大,而效率下降;

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],1,'luatao',(1,2,'nihao'))
print('初始的元组:',name0)

print('第一个值为1的元素的下标:',name0.index(1))
print('在下标2到4(不包括4)之间的第一个值为1的元素下标:',name0.index(1,2,4))
print('值为1的元素的个数:',name0.count(1))
print('将元组转换为列表后的列表:',list(name0))

输出结果:

初始的元组: (1, [1, 2, ‘你好’, 3], 1, ‘luatao’, (1, 2, ‘nihao’))
第一个值为1的元素的下标: 0
在下标2到4(不包括4)之间的第一个值为1的元素下标: 2
值为1的元素的个数: 2
将元组转换为列表后的列表: [1, [1, 2, ‘你好’, 3], 1, ‘luatao’, (1, 2, ‘nihao’)]

7.元组的遍历

#创建一个嵌套的元组
name0 = (1,[1,2,'你好',3],1,'luatao',(1,2,'nihao'))
print('初始的元组:',name0)
#元组迭代遍历
print('第一种遍历方法:利用迭代遍历')
for i in name0:
    print("序号:%s   值:%s" %(name0.index(i)+1,i))
#元组索引遍历
print('第二种遍历方法:利用索引遍历')
for i in range(len(name0)):
    print("序号:%s   值:%s" % (i + 1,name0[i]))
#应用枚举方式遍历
print('第三种遍历方法:利用枚举方法遍历')
for i ,st in enumerate(name0):
    print("序号:%s   值:%s" % (i + 1,st))
#设置从指定位置遍历
print('第四种遍历方法:利用枚举方法遍历')
for i ,st in enumerate(name0,1):#设置从1开始
    print("序号:%s   值:%s" % (i + 1,st))

输出结果:

初始的元组: (1, [1, 2, ‘你好’, 3], 1, ‘luatao’, (1, 2, ‘nihao’))
第一种遍历方法:利用迭代遍历
序号:1 值:1
序号:2 值:[1, 2, ‘你好’, 3]
序号:1 值:1
序号:4 值:luatao
序号:5 值:(1, 2, ‘nihao’)
第二种遍历方法:利用索引遍历
序号:1 值:1
序号:2 值:[1, 2, ‘你好’, 3]
序号:3 值:1
序号:4 值:luatao
序号:5 值:(1, 2, ‘nihao’)
第三种遍历方法:利用枚举方法遍历
序号:1 值:1
序号:2 值:[1, 2, ‘你好’, 3]
序号:3 值:1
序号:4 值:luatao
序号:5 值:(1, 2, ‘nihao’)
第四种遍历方法:利用枚举方法遍历
序号:2 值:1
序号:3 值:[1, 2, ‘你好’, 3]
序号:4 值:1
序号:5 值:luatao
序号:6 值:(1, 2, ‘nihao’)

今天下午又花费了一个半小时整理了元组的操作,时间用的越来越少了,说明我也越来越熟练了。不多说,继续努力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值