面试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()是工厂函数

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

python 元组(tuple)的更多相关文章

  1. Python 元组 tuple() 方法

    描述 Python 元组 tuple() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为元组. 语法 tuple() 方法语法: tuple(iterable) 参数 iterable -- ...

  2. Python元组tuple(不可变)

    Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, )  #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2 ...

  3. python 元组tuple - python基础入门(14)

    在上一篇文章中我们讲解了关于python列表List的相关内容,今天给大家解释一下列表List的兄弟 – 元组,俗称: tuple. 元组tuple和列表List类似,元组有如下特点: 1.由一个或者 ...

  4. python 元组tuple介绍,使用。

    原文 https://blog.csdn.net/ruanxingzi123/article/details/83184909 一  是什么? # python 元组tuple? ''' 元祖tupl ...

  5. Python—元组tuple

    列表的知识其实就类似于c语言中的数组,可插入.修改.list=[a,b,c,d] 而元组tuple,一旦初始化即不可修改.好处与绝对安全. 定义一个空的元组:t=() 定义只有一个元素的元组:t=(1 ...

  6. Python - 元组(tuple) 详解 及 代码

    元组(tuple) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17290967 元组是存放任意元素集合,不能修 ...

  7. Python元组(tuple)

    元组(tuple)是Python中另一个重要的序列结构,与列表类型,也是由一系列按特定顺序排列的元素组成,但是他是不可变序列.在形式上元组的所有元素都放在"()"中,两个元素使用& ...

  8. Python 元组(Tuple)操作详解

    Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号, 列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 一.创建元组 代码如下: tup1 = (' ...

  9. Python 元组Tuple概念和操作

    # 元组概念:有序的不可变的元素集合 # 和列表的区别就是, 元组元素不能修改 # 定义 # 一个元素的写法 # (666,) t = (666,) #正确写法 t = (666) #错误写法,括号当 ...

  10. Python 元组 (tuple)

    作者博文地址:https://www.cnblogs.com/liu-shuai/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号 ...

随机推荐

  1. 【入门详解】MyBatis入门基础详解

    什么是mybatis? MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XM ...

  2. CRLF line terminators导致shell脚本报错:command not found --转载

    Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Wind ...

  3. Goroutines和Channels(一)

    Go语言中的并发程序可以用两种手段来实现.本章讲解goroutine和channel,其支持“顺序通信进程”(communicating sequential processes)或被简称为CSP.C ...

  4. 团队作业7—团队项目设计完善&编码测试

    一.根据OOD详细设计工作要点,修改完善团队项目系统设计说明书和详细设计说明. <软件设计方案说明书>Github仓库地址:https://github.com/RNTF6/web 完善内 ...

  5. Spark与Flink大数据处理引擎对比分析!

    大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎,无论是Hadoop.Storm,还是后来的Spark.Flink.然而,毕竟没有哪一个框架可以完全支持所有的应用场景,也就说明不可能 ...

  6. HTTP请求GET/POST查看工具

    当你有一个http的get请求需要知道结果,可以直接在浏览器上输入,然后等待查看结果.    那如果是一个post请求呢?推荐使用一个国外工具Send HTTP Tool.    传送门:http:/ ...

  7. linux下ssh公钥验证的设置和远程登录

    1.第一步 在自己本机,通过工具生成一对公私钥对,对应id_rsa/id_rsa.pub 2.第二步 修改服务器配置     1)复制id_rsa.pub公钥内容    将文件内容追加到~/.ssh/ ...

  8. CSS#Flex-box, border-size, onresize() event, Media Queries

    Flexbox Pseudo-classes box-sizing: border-box HTML DOM event  resize() @media Queries: 根据一些css条件,触发一 ...

  9. Spring web flow的意义

    为什么要使用Spring web flow呢? 这里需要强调的一点就是,但凡一个技术的出现和流行,必有其适用的环境和存在的意义. Spring web flow加强了中央集权,这个该怎么理解呢?以往我 ...

  10. 从0开始接触html--第一天学习内容总结

    第一天 总结: h1-h6 p 段落 hr br 有序 ol li 无序 ul li 定义列表 dl dt dd 块级元素:独占一行,h1-h6 p hr div 行内元素:共占一行, em和i st ...