实际上元组是跟列表非常相近的另一种容器类型,元组和列表看起来不同的一点是元组用的是圆括号而列表用的是方括号。而功能上,元组和列表相比有一个很重要的区别,元组是一种不可变类型。正是因为这个原因元组能做一些列表不能做的事情……用做一个字典的Key。另外当处理一组对象时,这个组默认就是元组类型

不可变性给元组带来了什么影响:

在3个标准不可变类型里面—–数字、字符串、元组——元组是受影响最大的,一个数据类型是不可变的,简单来讲,就意味着一旦一个对象被定义了,它的值就不能再被更新,除非重新创建一个新的对象。对数字和字符串影响不是很大,因为它们是标量类型,当它们代表的值改变时,这种结果是有意义的,是按照你所想要的方式进行访问的。而对于元组,事情就不是这样了。
因为元组是容器对象,很多时候你想改变的只是这个容器中的一个或者多个元素。不幸的是这是不可能的,切片操作符不能用作左值进行赋值。这和字符串没什么不同,切片操作只能用于只读的操作。
不可变并不是坏事,比如我们把数据传给一个不了解的API时,可以确保我们的数据不会被修改。同样地,如果我们操作一个从函数返回的元组,可以通过内建List()函数把它转换成一个列表。

Python的元组被设计成不可变的影响相关推荐

  1. String的内存模型,为什么String被设计成不可变的

    String是Java中最常用的类,是不可变的(Immutable), 那么String是如何实现Immutable呢,String为什么要设计成不可变呢? 前言 关于String,收集一波基础,来源 ...

  2. java语言特点 字符串不变_面试必问:Java中String类型为什么设计成不可变的?

    这几天在各大平台上都看到过这样一些帖子,全都是关于String类型对象不可变的问题,当然现在也是找工作的准备时期,因此花了一部分时间对其进行整理一下. 想要完全了解String,在这里我们需要解决以下 ...

  3. string replace_面试必问:String类型为什么设计成不可变的?

    这几天在各大平台上都看到过这样一些帖子,全都是关于String类型对象不可变的问题,当然现在也是找工作的准备时期,因此花了一部分时间对其进行整理一下. 想要完全了解String,在这里我们需要解决以下 ...

  4. java中数组的返回值是什么类型_面试必问:Java中String类型为什么设计成不可变的?...

    这几天在各大平台上都看到过这样一些帖子,全都是关于String类型对象不可变的问题,当然现在也是找工作的准备时期,因此花了一部分时间对其进行整理一下. 想要完全了解String,在这里我们需要解决以下 ...

  5. java 字符串连接_为什么 Java 要把字符串设计成不可变的

    String是Java中一个不可变的类,所以它一旦被实例化就无法被修改.不可变类的实例一旦创建,其成员变量的值就不能被修改.不可变类有很多优势.本文总结了为什么字符串被设计成不可变的.将涉及到内存.同 ...

  6. 为什么String要设计成不可变的?

    翻译人员: 铁锚 翻译日期: 2013年11月18日 原文链接: Why string is immutable in Java ? 这是一个老生常谈的话题(This is an old yet st ...

  7. String被设计成不可变和不能被继承的原因

    String是所有语言中最常用的一个类.我们知道在Java中,String是不可变的.final的.Java在运行时也保存了一个字符串池(String pool),这使得String成为了一个特别的类 ...

  8. 为什么Java要把字符串设计成不可变的

    为什么80%的码农都做不了架构师?>>>    对象变量其实是一个引用,它们的值是指向对象所在的内存地址,而不是对象本身. 1.Java内存机制 Java把内存分成两种,一种叫做栈内 ...

  9. 为什么 Python 的 Range 要设计成左开右闭区间?

    分析过程:https://www.jianshu.com/p/5eaa330788e8 总结一下,选择第一种表示法(左闭右开区间)有以下几个原因 上下界之差等于元素的数量 易于表示两个相邻子序列,一个 ...

最新文章

  1. python贪吃蛇控制台_如何用Python写一个贪吃蛇AI
  2. 无法检查指定的位置是否位于cfs上_(干货分享)一文搞明白 节气门位置传感器的作用、故障类型与症状、诊断方法...
  3. java 简单获取Excel表格内容(初学者)
  4. Java提高篇 ——Java注解
  5. unit类型是什么?_面试官虚晃一枪:项目中有用过锁吗?能解释一下什么是AQS?...
  6. ACR2010_常规医疗环境下TNF拮抗剂对RA骨侵蚀的修复作用
  7. 《与爱因斯坦月球漫步——美国记忆力冠军教你记忆一切》读书摘抄[美]乔舒亚.福尔
  8. Java核心技术卷1基础知识课程-专题视频课程
  9. vasp-分子动力学模拟
  10. xp系统的无线配置服务器,Windows XP系统下无线网卡配置及安装
  11. Struts2通配符映射的各种情况详情
  12. Python open()函数详解:打开指定文件
  13. opencv实现眼动检测【胡子哥哥】
  14. 阿里轻量应用服务器搭建ftp服务器
  15. 泛生子Q2及臻和招股书速读
  16. Proguard的Keep使用方法
  17. 记录一次尝试修复elasticsearch Data too large问题
  18. Vulkan学习(一)介绍
  19. Google MLOps白皮书:MLOps实践者指南Part I MLOps生命周期及核心能力
  20. Latex声调(一声、二声、三声等)

热门文章

  1. 学校校车运营各项安全管理制度_学校校车接送安全管理制度(通用3篇)
  2. 算法训练 瓷砖铺放 递归
  3. 资阳停车场系统推荐_详细讲解停车场管理车牌识别系统安装
  4. 冒泡排序--Java
  5. 关于计算机网络的描述错误的是,【单选题】以下关于计算机网络定义的描述中,错误的是...
  6. Mysql 零距离-入门(一)
  7. Webstorm设置开发模板
  8. el-tooltip位置不灵活_美团研究院:超五成生活服务业商户有灵活用工需求
  9. matlab中平均函数用法,matlab中怎样在X的指定范围内求y的平均值
  10. 聊天室程序python_Python聊天室程序(基础版)