Python元组学习笔记

元组不是那么”不可变”

虽然元组对象本省不可变, 但这并不意味着元组包含的可变对象也不可变了.

t = (['xyz', 123], 23, -103.4)
\#t = (['xyz', 123], 23, -103.4)
t[0][1] = ['abc', 'def']
\#t = (['xyz', ['abc', 'def']], 23, -103.4) 

默认集合类型

所有多对象的, 逗号分隔的, 没有明确用符号定义的, 比如说用方括号表示列表和用圆括号表示元组一样, 等等这些集合默认的类型都是元组.

'abc', -4.24e93, 18+6.6j, 'xyz'
\#('abc', -4.24e93, 18+6.6j, 'xyz')

所有函数返回的多对象(不包括有符号封装的)都是元组类型. 有符号封装的多对象集合其实就是返回的一个单一的容器对象.

def foo1():
return obj1, obj2, obj3 #返回包含三个对象的元组


def foo2():
return [obj1, obj2, obj3] #返回一个单一对象, 包含三个对象的列表


def foo3():
return (obj1, obj2, obj3) #返回三个对象的元组, 显式定义

为了避免讨厌的副作用, 最好是总是显式的用圆括号表达式表示元组或者创建一个元组.

4, 2 < 3, 5       #(4, True, 5)
(4, 2) < (3, 5)  #tuple comparison

单元素元组

圆括号包裹一个单一元素时,首先被作为分组操作, 而不是元组的分界符. 可通过在第一个元素后面添加一个(,);来表明这是一个元组而不是在做分组操作

type(['abc'])  #a list
type(('abc'))  #a string, not a tuple
type(('abc', )) #a tuple
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值