Python 基础学习05

元组对象的创建与索引

元组(tuple)是Python中比较抽象的对象类型,是依据计算机代码执行的功能特点衍生的一类对象。使用上和列表类似,都有装载其他对象的容器功能,并且无论是对象创建方法,还是对应的对象常用方法都非常类似。但二者又拥有本质上的不同,其中最核心的不同就表现在元组属于不可变对象类型由此很多基于列表的增删改查相关操作对元组来说都无法执行,并且正是由于其不可变性,在某些情况下,适当使用元组对象将很大程度上确保代码运行的稳定性

1.元组的创建

和列表不同,Python中一般使用()来圈定元祖

1.1()

# 使用小括号来创建元组
t=(1,2,3)
type(t)
tuple
# 正确的创建只包含一个元素元组的方法
(1,)
(1,)
# 空元组和空列表创建方法一样,限定符内不添加任何元素即可
()
()
#元组和列表一样,都拥有容器特性,只不过元组是不可变容器
# 可存放不同类型对象
('Hi',1,print,(1,2),[1,2])
('Hi', 1, <function print>, (1, 2), [1, 2])

1.2函数创建法

和列表类似,元组也可通过tuple函数来进行创建

# 传入列表,创建元组,也可视作列表转化为元组
tuple([1,2])
(1, 2)
# 若要创建只包含一个元素的元组,也需要将其放入列表中
tuple([1])
(1,)
# 传入字符串,创建元组,也可理解为将字符串转化为元组
tuple('Hello')
('H', 'e', 'l', 'l', 'o')
# 元组和列表也可以相互转化
list(tuple('Hello'))
['H', 'e', 'l', 'l', 'o']

1.3借助range函数创建元组

和列表一样,当需要创建具有一定分布规律数值的元组时,也可借助range函数来实现,其实现过程与创建有规律分布列表方法完全一致。

tuple(range(5))
(0, 1, 2, 3, 4)
tuple(range(2,5))
(2, 3, 4)
tuple(range(2,5,2))
(2, 4)
tuple(range(5,2,-2))
(5, 3)

2.元组的索引和切片

元组的索引切片的方法和列表完全一致。

t1=tuple(range(5))
print(t1)
(0, 1, 2, 3, 4)
t1[2]
2
t1[-1]
4
t1[1:3]
(1, 2)
t1[::-2]
(4, 2, 0)

3.元组不可变性讨论

基本理解:元组中包含的对象不可变(不能对元组内容进行修改//字符串也不能修改,但是列表可以修改

本质上,元组指向性不变。

# 创建一个包含可变对象的元组
tp2=('a','b',['A','B'])
print(tp2)
('a', 'b', ['A', 'B'])
# 查看可变对象内容
tp2[2]
['A', 'B']
# 修改可变类型对象
tp2[2][0]='X'
tp2[2][1]='Y'
print(tp2)
('a', 'b', ['X', 'Y'])
​

表面上看,tuple的元素确实变了,但其实改变的不是tuple元素,而是list元素。tuple一开始指向的list并没有改变成其他别的list。所以,tuple所谓的不变是指tuple中每个元素的指向永远不变。即指向'a',就不能改为指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list内部元素是可变的。

tp2[2].append('Z')
print(tp2)
('a', 'b', ['X', 'Y', 'Z'])

元组的常用方法

由于元组和列表的高度类似,绝大多数列表的方法都可作用于元组。当然,由于元组的不可变性,用于修改容器内元素的一些增删改查的方法除外。

1.元组的操作符

和列表一样,元组也有加号和乘号两种操作符。

t1=(1,3,4)
t1+t2
t2=(1,'Hi')
t1+t2
(1, 3, 4, 1, 'Hi')
t2*2
t2*2
(1, 'Hi', 1, 'Hi')

2.count方法

用于计算元组内某元素出现的次数。

t=tuple(range(4))+(1,3)
print(t)
(0, 1, 2, 3, 1, 3)
t.count(3)
2

3.index方法

根据内容,查找索引。

t=yuple(range(4))
print(t)
(0, 1, 2, 3)
t.index(3)
3

4.in方法

3 in t
True

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值