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()是工厂函数
擦,这下以后面试再问元组应该不会有问题了吧。。。。。
python 元组(tuple)的更多相关文章
- Python 元组 tuple() 方法
描述 Python 元组 tuple() 方法用于将可迭代对象(字符串.列表.元祖.字典)转换为元组. 语法 tuple() 方法语法: tuple(iterable) 参数 iterable -- ...
- Python元组tuple(不可变)
Python元组Tuple(不可变): 元组的特点: 1.元组的初始化: tuple = (1, ) #元组只有一个元素的话,初始化时要加,否则当做元素的普通变量类型处理 tuple = (1, 2 ...
- python 元组tuple - python基础入门(14)
在上一篇文章中我们讲解了关于python列表List的相关内容,今天给大家解释一下列表List的兄弟 – 元组,俗称: tuple. 元组tuple和列表List类似,元组有如下特点: 1.由一个或者 ...
- python 元组tuple介绍,使用。
原文 https://blog.csdn.net/ruanxingzi123/article/details/83184909 一 是什么? # python 元组tuple? ''' 元祖tupl ...
- Python—元组tuple
列表的知识其实就类似于c语言中的数组,可插入.修改.list=[a,b,c,d] 而元组tuple,一旦初始化即不可修改.好处与绝对安全. 定义一个空的元组:t=() 定义只有一个元素的元组:t=(1 ...
- Python - 元组(tuple) 详解 及 代码
元组(tuple) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17290967 元组是存放任意元素集合,不能修 ...
- Python元组(tuple)
元组(tuple)是Python中另一个重要的序列结构,与列表类型,也是由一系列按特定顺序排列的元素组成,但是他是不可变序列.在形式上元组的所有元素都放在"()"中,两个元素使用& ...
- Python 元组(Tuple)操作详解
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号, 列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可 一.创建元组 代码如下: tup1 = (' ...
- Python 元组Tuple概念和操作
# 元组概念:有序的不可变的元素集合 # 和列表的区别就是, 元组元素不能修改 # 定义 # 一个元素的写法 # (666,) t = (666,) #正确写法 t = (666) #错误写法,括号当 ...
- Python 元组 (tuple)
作者博文地址:https://www.cnblogs.com/liu-shuai/ Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号 ...
随机推荐
- c#进阶之Delegate
委托是什么?答:委托是一种类型 等同与 一个class类,继承System.MulticastDelegate,但mult....gate是一个特殊类,不能够派生 委托的调用,如何去使用 1/委托 ...
- [Shiro] - Shiro之进阶
上一个知识点ssm, 哪里需要权限,哪里写注解@RequirePermission就行. 但是,真正项目开发的时候, 这种方式就很有局限性了, 当权限配置关系发生变化, 每次都要修改代码, 编译打包重 ...
- codeforces 350 div2 D Magic Powder - 2 二分
D2. Magic Powder - 2 time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Phpstorm配置scss不生成缓存
--no-cache 加上这个,就不会生成 .sass-cache 文件夹了.
- jstl中<c:forEach>的用法
在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JST ...
- STL_容器使用时机
1. 来自教程: ◆ Vector的使用场景:比如软件历史操作记录的存储,我们经常要查看历史记录,比如上一次的记录,上上次的记录,但却不会去删除记录,因为记录是事实的描述. ◆ deque的使用场景: ...
- 使用R的数据库查询
JS 很多方法可以用R查询数据.这篇文章展示了三种最常见的方法: 运用 DBI 使用dplyr语法 使用R note book 背景 最近的一些软件包改进可以更轻松地将数据库与R一起使用.下面的查询示 ...
- 显示Unicode 字节的对应字符的小技巧
在一段smali代码里看到这样的代码 const-string v0, "\u7528\u6237\u9a8c\u8bc1\u8fc7\u671f\uff0c\u8bf7\u91cd\u65 ...
- 为什么需要API网关?
目录 0:00 微服务与网关(Microservices & API Gateways) 大家好,我叫Macro,今天我们谈论有关微服务和网关的话题.我是Mashape的CTO,也同时是开源网 ...
- 20170813xlVBA跨表筛选数据
一.数组方案 Sub CustomFilter() Dim Rng As Range, Arr As Variant Dim EndRow As Long, EndCol As Long Dim i ...