使用dict和set Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list: 给定一个名字,要查找对应的成绩, ...
分类:
编程语言 时间:
2019-05-12 19:38:38
阅读次数:
146
如果一个对象的状态在创建以后就不会再改变,那么就可以认为它是不可变对象。因为这些对象无法被修改,所以不需要考虑多线程下的同步问题,这使得不可变对象在多线程程序中能够发挥重大作用。如下所示,String对象就是一个不可变对象。对于firstName一些列的操作(连接""和lastName)并不会修改这些字符串中的任何一个,而是会重新创建一个新的对象来存放fullName。自定义一
分类:
编程语言 时间:
2019-05-08 23:10:11
阅读次数:
216
一、简单定义不可变对象(Immutable Objects)即对象一旦被创建,它的状态(对象的数据,也即对象属性值)就不能改变,反之即为可变对象(Mutable Objects)。当满足以下条件时,对象才是不可变的:1. 对象创建以后其状态就不能修改。2. 对象的所有域都是final类型。3. 对象 ...
分类:
编程语言 时间:
2019-05-06 23:38:58
阅读次数:
201
来自流畅的python上记录的一道谜题 >>> t = (1, 2, [30, 40])>>> t[2] += [50, 60]到底会发生下面 4 种情况中的哪一种? a. t 变成 (1, 2, [30, 40, 50, 60])。 b. 因为 tuple 不支持对它的元素赋值,所以会抛出 Typ ...
分类:
其他好文 时间:
2019-05-03 22:32:40
阅读次数:
161
String字符串 字符串由String类提供,除了直接使用单双引号或其它字面量创建字符串,也可以使用String.new()方法来创建。 Ruby中的 字符串是可变对象 。 字符串的连接 直接连接即可: 单双引号 这和Perl一样,和Shell也类似。单引号是强引用,双引号是弱引用。 双引号的一个 ...
分类:
其他好文 时间:
2019-05-03 18:14:22
阅读次数:
115
1、可变与不可变类型 1)学python,一定要记住“一切皆为对象,一切皆为对象的引用”; 2)所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变; 3)可变数据类型:value值改变,id值不变;不可变数据类型:value值改变,id值也随之改变。 注:即id不变时,value可以改 ...
分类:
其他好文 时间:
2019-05-01 14:53:02
阅读次数:
122
一、元组用法 1、索引 | 切片 | 长度 2、.count(obj)查看元素的个数 3、.index(obj,bindex,eindex)查看元素索引,可以指定从第几个开始到第几个结束 4、有序存储,可存放多个数据,不可变(内部可以包含可变对象,可变对象依旧可变) 5、应用场景:将不允许操作的列表 ...
分类:
其他好文 时间:
2019-04-05 15:36:31
阅读次数:
186
连接字符串的时候可以用join也可以用+,但这两者有没有区别呢? 我们先来看一下用join和+连接字符串的例子 两者的结果是一样,那么考虑这样一个问题,这两者在性能上有区别吗? 我们来做个实验,比较下join和+的性能 输出: 可以看到,join的性能明显好于+。这是为什么呢? 原因是这样的,字符串 ...
分类:
其他好文 时间:
2019-04-04 09:26:38
阅读次数:
190
1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String 2.StringBuilder:线程非安全的,StringBuffer:线程安全的 3.String 声明的对象是不可变对象。 如果一个StringBuffer对象在字符串缓冲区被多个线程使用时 ...
分类:
其他好文 时间:
2019-04-03 19:22:38
阅读次数:
170
1、可变的默认参数 list 示例: 输出结果: 查看其id output 从输出结果可以看出,在第1,2,4次调用时,mylist的内存地址是不变的,mylist是列表属于可变对象,对其进行操作时,不会重新分配地址,append函数是将元素添加到列表的最后面,所以每次输出时将新的参数添加到列表的最 ...
分类:
编程语言 时间:
2019-03-27 20:57:25
阅读次数:
170