python 元组(tuple)

面试python我想每个人都会被问一个问题,就是python中的list和tuple有什么区别?

一般情况下,我会回答,list元素可变,tuple元素不可变(书上或者其他的博客都是这么写的),一般情况下,面试官就不会往下问了,然而。。。今天某度的面试官问我:真的不可变?是什么都不可以变么?

我当时没反应过来,就说不可变。面试官呵呵了,又问tuple可以相加吗,我回答:可以,但是会生产一个新的元组(这个我还回答的不错,暗自高兴一下)

然后面试官又问:可以删除么?我其实不知道,因为我没删除过,不过,凭元组元素不可变这句话我就直接干脆的回答说不可以删除,后来我查了一下,确实不可以删除。

总结一下元组的基本注意点及用法吧

元组我们用的最多的应该是函数中传参数,还有函数返回吧。

1.元组不可变性验证:

a = (1,2)

a[0] = 2 会报错TypeError: ‘tuple‘ object does not support item assignment。

a = (1,2,[1,2,3])

a [2][1] = 0 是可以的

说明:元组元素不可变,是元素指向的数据不可变上面的a[0] = 2报错,是a[0]这个引用指向的2是int数据,int数据本身不可变,python中str,int,char,tuple本身就不可变,list,dict可变。

a[2][1]可变是因为这个引用指向的是一个list,list是可变的,所以改变时不会报错。

看一下摘自网上的图:

所以tuple不变的是指向,指向什么就一直是什么,不能改变

2.元组的相加

a = (1,2)    id(a):3052812140L

b = (3,4)

a = a+b      id(a):153147604   每个人测的id肯定不同,这个应该没有异议。。。

此时a = (1,2,3,4)。不是说元组不可变么,怎么变了,其实不过是a指向一个由a和b相加的元组,不是a变了。原来那个元组没变,也没有了引用,坐等被当作垃圾回收。

3.元组的删除

tup = (1,2,3,4);
del tup[0];
此时会报错TypeError: ‘tuple‘ object doesn‘t support item deletion

4.元组访问及切片

a = (1,2,[3,4])

a[0]指向1,a[2][1]指向4

a[:1]指向一个子元组(1,2)

5.元组操作

cmp(tuple1, tuple2):比较两个元组元素。
     len(tuple):计算元组元素个数。
     max(tuple):返回元组中元素最大值。
     min(tuple):返回元组中元素最小值。
     tuple(seq):将列表转换为元组。

cmp(),len(),min(),max()都是序列的内置函数,tuple也是序列,所以可以用内置函数操作

tuple()是工厂函数

擦,这下以后面试再问元组应该不会有问题了吧。。。。。

时间: 2024-10-13 20:29:26

python 元组(tuple)的相关文章

Python元组tuple(不可变)

Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, )  #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2, 3, [2,4,5])  #可以使不同类型的元素 2.元组中的元素不能被修改: tuple[2] = 5   #错误的,编译不通过,会报错 3.用1中的tuple,只不能改变[2,4,5]列表元素的地址,但可以通过读取其地址改变其列表中的值. 一.元组的运算: 1.元组的组合: tuple3 =

Python—元组tuple

列表的知识其实就类似于c语言中的数组,可插入.修改.list=[a,b,c,d] 而元组tuple,一旦初始化即不可修改.好处与绝对安全. 定义一个空的元组:t=() 定义只有一个元素的元组:t=(1,),要在圆括号元素的后面加上一个逗号,python才会识别到这个元素,要不然Python会把t=(1)当做元组中元素的个数1来对待. 定义一个带有列表的元组:t=(a,b,c,[x,y]),在这里可以对元组中列表的元素进行修改,例如t[3][0]='X',t[3][1]='Y',这是元组t=(a,

Python 全栈开发:python元组tuple

元组 什么是元组:"元组就是一个不可变的列表" (并不是列表,只是为了便于记忆) 用途:用于存放多个值,只能读不能二次赋值 表现形式:小括号()中间以逗号分割各个元素 eg: tuples = ('a','b','c','d') 元组常用的操作 生成一个简单的元组 tuples = tuple(range(5)) print(tuples) #结果(0, 1, 2, 3, 4) len(tuple) #计算元组长度 tuples = (0, 1, 2, 3, 4) print(len(

python 元组tuple

@原网站 因为tuple不可变,所以代码更安全.如果可能,能用tuple代替list就尽量用tuple. tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如: >>> t = (1, 2) >>> t (1, 2) 如果要定义一个空的tuple,可以写成(): >>> t = () >>> t () 但是,要定义一个只有1个元素的tuple,如果你这么定义: >>> t

python的tuple()

转载于:http://www.runoob.com/python/att-tuple-tuple.html 描述 Python 元组 tuple() 函数将列表转换为元组. 语法 tuple()方法语法: tuple( seq ) 参数 seq -- 要转换为元组的序列. 返回值 返回元组. 实例 以下实例展示了 tuple()函数的使用方法: 例子1: >>> tuple([1,2,3,4]) (1, 2, 3, 4) >>> tuple({1:2,3:4}) #针对

Python学习:元组(tuple)

元组tuple也是Python 的一个集合类型.有以下特点: 任意对象的有序集合: 通过偏移存取,而不是键: 不可变序列类型: 固定长度.异构.任意嵌套: 对象引用的数组. 常见运算: ()        #空元组 T =(0,) T = (0, 'Ni', 1.2, 3) T =  0, 'Ni', 1.2, 3    #另一个四元素的元组 T = tuple('spam') T[i] T[i][j] T[i:j] len(T) T1 + T2        #合并.重复 T*3 for x 

python 数据类型: 数字Nubmer / 字符串String / 列表List / 元组Tuple / 集合Set / 字典Dictionary

#python中标准数据类型 数字Nubmer 字符串String 列表List 元组Tuple 集合Set 字典Dictionary #单个变量赋值countn00 = '10'; #整数countn01 = '100.0' #浮点countn02 = "双权"; #字符串countn03 = '10'; #数字#print("整数 = "+countn00,"浮点 = "+countn01,"字符串 = "+countn0

Python基础入门—元组tuple

目录 列表 元组的定义 元组的索引和切片 计数tuple.count() 索引tuple.index() 列表 元组是不可变数据类型 元组中的数据类型不限 元组中的元素之间用逗号分割 最外层用( )括起来 由于元组和列表极其相似,元组又常常被称之为 只读列表 元组的定义 tuple()来创建 s = 'python' L = tuple(s) L ('p', 'y', 't', 'h', 'o', 'n') () l = ('p', 'y', 't', 'h', 'o', 'n') l type

python元组(tuple)

元组tuple 元组一旦创建后便不可更改 表示方法: name1=("luo","gu","hu") 在一个元组中,可以是字符串,数字或混合型的 一.对于元组操作有以下函数: #1.cmp(name1,name2) :用于比较两个元组的元素 #2.len(name1) :元组元素个数 #3.max(name1) : 返回元组中最大值 #4.min(name1) : 返回元组中最小值 #5.tuple(list) :将元组转换为列表 ,亦可以将列表

[python]python之tuple元组

tuple特性 python的tuple与列表类似,不同之处在于tuple的元素不能修改. tuple使用小括号,列表使用方括号. tuple创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. tuple与字符串类似,下标索引从0开始,可以进行截取.组合. tuple中只包含一个元素的时候,也需要在元素后面添加符号,否则()会被作为运算符处理: tuple可以进行tuple之间的+连接: tuple中的一级元素不可以修改但是可以修改二级的: tuple中的元素是不允许删除的,但是可以使用d