[python skill]python中tuple 和list 的区别
引用1:https://blog.csdn.net/infty/article/details/42392571
感谢~
只看定义的话,Tuple会被理解为元素不可变(immutable)的List。但如果只是如此,完全没有必要引入一个新的类型。
这里有一个很有意思的讨论。其中举了个例子。比如你去散步,在每一时刻,你都可以记录下自己的位置,比如$(x,y)$,这是一个Tuple;把这个坐标点放到一个List中,然后每隔一段时间,增添新的坐标点。这样很符合逻辑。但反过来就讲不通了。这反映了Tuple内的各元素之间很强的互补关系--它们共同描述了一个个体。在这个例子中,就是一个坐标点;你如果试图去掉其中的$x$坐标,从两维降到一维,这个Tuple就没有意义了--没人知道它代表那个点。这是Tuple元素不可增添或删减的原因。
另一方面,各坐标点之间的关系则只有先后关系,没有强烈的逻辑关联。所以你如果去掉List的末尾一个坐标点--没问题,现在的List表示的是在你到达倒数第二点前的路线。
用上述讨论中的一句话总结,就是“List有(先后)次序,Tuple有(逻辑)结构”。
另一个说法也很有道理,Tuple是一个微型的Class。毫无疑问,Class中的所有元素都是为了描述同一个事物而存在。
(按照最小化的思想,Tuple的确不必引入。但从理解一段代码的角度,看到一个Tuple,我们马上就知道它在描述一件事物,逻辑上显然更加清晰易懂。)
引用2:https://blog.csdn.net/null_kt/article/details/53467223
感谢~
#只创建一个tuple 需要加,消除歧义 a_tuple=(2,) #在tuple中创建list mixed_tuple=(1,2,['a','b']) print("mixed_tuple"+str(mixed_tuple)) #如果在tuple中嵌套list tuple中的list是可以被更改的 mixed_tuple[2][0]='c' print(mixed_tuple) #tuple是一个不可以改变的list 一旦创建 一个tuple 就不能以任何的方式改变它 #tuple 与list 的相同之处 #定义 tuple 与定义list的方式相同,除了整个元素集用小括号包围的而不是方括号 #tuple的元素与list一样按定义的次序进行排序 tuple的索引与list一样从0开始,所以 #一个非空的tuple的一个元素总是t[0] #负数索引与list一样从tuple的尾部开始计数 #与list一样分片(slice)也可以使用 .注意当分割一个list时,会得到一个新的list;当分割 #所以当分割一个tuple时,会得到一个新的tuple # #tuple不存在的方法 # 不能从一个tuple增加元素。所以没有append 和extend方法 #不能用tuple删除元素,所以没有remove和pop方法 #然而可以使用in 来查看一个元素是否存在tuple中 # ##用tuple的好处 #tuple比list操作速度快.如果定义了一个值的常量集,并且唯一要用它做的是不断地遍历 #则用tuple代替list #如果对不需要修改的数据进行"写保护",它可以使代码更安全.使用tuple而不是list如同拥有一个 #隐含的assert语句,说明这一数据是常量.如果必须要修改这些值.可以把tuple转换list #的转换 #tuple与list的转换 #tuple可以转换成list,反之亦然.内置的tuple函数接受一个list,并返回一个有着相同元素的tuple.而list函数 #接收一个tuple返回一个list.从效果上看,tuple冻结一个list,而list解冻一个tuple # #tuple的其他应用 #一次赋多值 #>>>v=('a','b','e')) #>>>(x,y,z)=v #解释:v是一个三元素的tuple并且(x,y,z)是一个三变量的tuple.将一个tuple赋值给另一个tuple会按顺序将v的每一 #个值赋给每一个变量
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SMSSDK合理运用好友关系的方法
一、功能介绍获取手机通讯录中联系人列表里使用此应用的用户信息,app可以提示:你的联系人里某某也正在使用,是否添加好友开发者可以在用户验证手机号码成功或注册成功后通过 + (void) submitUserInfo:(SMSSDKUserInfo *)userInfo result:(SMSSubmitUserInfoResultHandler)result; 上传该用户的信息,如头像,昵称等。如果另一个用户的通讯录联系人里有上传过的用户,开发者可以通过 + (void) getAllContactFriends:(SMSGetContactsFriendsResultHandler)result; 获取到该好友的信息(验证的电话号码,区号,昵称,头像等)二、使用演示开启通讯录好友功能 [SMSSDK enableAppContactFriends:YES]; 在用户验证手机号后 提交用户的信息。 [SMSSDK commitVerificationCode:@"1234" phoneNumber:@"13800138000" zone:@"86" result:^(NSError *...
- 下一篇
使用Python这么多年,才发现Python还有这些实用的功能和特点
在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你应该了解的Python功能特色。 带任意数量参数的函数 你可能已经知道了Python允许你定义可选参数。但还有一个方法,可以定义函数任意数量的参数。 首先,看下面是一个只定义可选参数的例子 现在,让我们看看怎么定义一个可以接受任意参数的函数。我们利用元组来实现。 使用Glob()查找文件 大多Python函数有着长且具有描述性的名字。但是命名为glob()的函数你可能不知道它是干什么的除非你从别处已经熟悉它了。 它像是一个更强大版本的listdir()函数。它可以让你通过使用模式匹配来搜索文件。 你可以像下面这样查找多个文件类型: 如果你想得到每个文件的绝对路径,你可以在返回值上调用realpath()函数: 调试 下面的例子使用inspect模块。该模块用于调试目的时是非常有用的,它的功能远比这里描述的要多。 这篇文章不会覆盖这个模块的每个细节,但会展示给你一些用例。 生成唯一ID 在有些情况下你需要生成一个唯一的字符串。我看到很多人使用md5(...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS关闭SELinux安全模块