python 3.tuple

定义:

tuple是另一种有序的列表,中文翻译为“ 元组 ”。
形式:(元素1, 元素二, …)

如:表示班里同学的名称,用tuple表示如下:
t = (‘Adam’, ‘Lisa’, ‘Bart’)

tuple和list的异同

  1. 形式: tuple 和 list 非常类似,list的元素是用[]包裹的,tuple的元素是用()包裹的;
  2. list创建后,可以进行修改,有append()、insert()和pop()方法;tuple一旦创建完毕,就不能修改了,也就没有list的那些方法。
  3. 获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素

创建单元素tuple

t = (1)
print t # 1

竟然是整数1,为啥呢?
因为( )既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。

所以 Python 规定: 单元素 tuple 要多加一个逗号“,” ,这样就避免了歧义:

t = (1,)
print t # (1,)

Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。

多元素 tuple 加不加这个额外的“,”效果是一样的:

t = (1, 2, 3,)
print t #(1, 2, 3)

“可变”的tuple

t = (‘a’, ‘b’, [‘A’, ‘B’])

t 有 3 个元素:‘a’,'b’和一个list:[‘A’, ‘B’]。list作为一个整体是tuple的第3个元素。list对象可以通过 t[2] 拿到:

L = t[2]

然后,我们把list的两个元素改一改:

L[0] = ‘X’
L[1] = ‘Y’
print t # (‘a’, ‘b’, [‘X’, ‘Y’])

不是说tuple一旦定义后就不可变了吗?怎么现在又变了?

我们先看看定义的时候tuple包含的3个元素:

当我们把list的元素’A’和’B’修改为’X’和’Y’后,tuple变为:

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

修改上述tuple的内容不可变:

t = (‘a’, ‘b’, (‘A’, ‘B’))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值