今天学了:
01、第六天的
1、 is 与 == 的区别()
is 比较的是内存地址是否相等,而 == 是比较值是否相等
查看内存地址用id
2、小数据池
int类型是-5~256共用一个数据池,
str类型无明确说明,但老师说有特殊字符不存在小数据池。
单个字符*int(20) 以内 有小数据池。
3、编码
英文:
str:表现形式:‘balabala’
内部编码形式:unicode
bytes:表现形式 :b'balabala'
内部编码形式:非Unicode
中文:
str:表现形式:'巴拉巴拉'
内部编码形式:unicode
bytes:表现形式:b'Xf2X03'这种的
内部编码形式:非unicode
02、数据类型的补充:
(1)isspace 看名字就知道是判定字符串是不是全为空格的
(2)tuple 对于元组而言,若元组中只有一个元素,则元组类型与此元素相同
也就是bool((0))返回False的原因
(3)list 循环列表的时候不要进行删除操作,若必须,则倒着删
(4)dic 对字典进行循环的时候,不能进行删除操作,故需要删除的时候可以按循环添加需要删除的元素,
然后再进行一次循环进行删除
dict.fromkeys的用法:用处是迭代添加元素,前者是键,后者是值
如dic = dict.fromkeys('abc','alex')
则运行结果为
03、集合set
集合里面的数据是可哈希的(即不可变),但集合是不可哈希的,不能作为字典的Key;
集合中不存在重复的元素,而且是无序的,故不存在索引。
增:add 加一个元素 update 迭代增加元素
删:del 彻底删除 pop随机删 clear清空 remove删除元素
查:for循环
frozenset()变为不可变的集合
集合的作用基本有两种:1、去重
2、数据测试关系:&交集
- 差集
| 并集
^反交集 即为并集减去交集
判别数据关系时,用 issubset (是子集)
issuperset (是超集)
# set1 = {1,2,3}
# set2 = {1,2,3,4,5,6}
# print(set1.issubset(set2)) # 子集
# print(set2.issuperset(set1)) # set2 是set1的超集
04、深浅copy
不是指向一个,在内存中开辟了一个内存空间,对于浅copy来说,第一层创建的是新的内存地址,
而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
deep.copy
对于深copy来说,两个是完全独立的,
改变任意一个的任何元素(无论多少层),另一个绝对不改变.
个人认为浅copy之所以称为浅,就是指的复制的不够彻底,因为它是随动的;而深copy则复制的比较根深蒂固,不会因此改变
PS:赋值的问题:
a = ['a','b','c']
b = a
a.append('i')
输出结果应是a = b = ['a','b','c','i']
另外还有解码decode与编码encode,GBK与Utf-8不能实现直接的互相转化,需要用unicode作为中间桥梁