一、编码进阶
# 字符串转换成bytes型 s1 = 'taibai' s2 = b'taibai' # 默认的str是(py2.x里的)unicode, bytes是(py2.x)的str, b+字符串代表的就是bytes # 将字符串的第一个字母变成大写,其他字母变小写 s1 = b'lily' print(s1.capitalize()) # 编码 str ---> bytes 编码 encode() s1 = 'alex' b1 = s1.encode('utf-8') # 编码 b2 = s1.encode('gbk') print(s1, type(s1)) print(b1, type(b1)) print(b2, type(b2)) # 解码 s1 = '猪八戒' b1 = s1.encode('utf-8') b2 = s1.encode('gbk') print(s1,b1) print(s1,b2) bytes ---> str decode()解码 b1 = b'\xe5\xa4\xaa\xe7\x99\xbd' s1 = b1.decode('gbk') print(s1)
二、小数据池
1. id 查看内存地址
s1 = '太白' s2 = '太白' print(s1 == s2) # 值是否相等 print(id(s1)) print(id(s2))# 内存地址
2. is 身份运算 判断的是内存地址是否相同
s1 = '太白' s2 = '太白' print(s1 is s2) # 判断内存地址是否相等
3. 小数据池
i1 = -3 int: -5 ~ 256 范围之内 str: 满足一定得规则的字符串(详见博客https://www.cnblogs.com/jin-xin/articles/9439483.html) 小数据池的优点: 1,节省空间。 2,提高性能。
三、集合
集合里面的元素必须是不可变的数据类型,集合本身是可变的数据类型。
集合是无序的,不重复。
print({[1, 2, 3], {'name': 'lily'}}) print({'lily', 'marry', 'tony', '老猪', 'AnNi'})
1、 列表去重。
l1 = [1, 1, 2, 3, 4, 3, 2, 4, 5, 6] set1 = set(l1) print(set1) l1 = list(set1) print(l1)
2、关系测试。
set1 = {'lily', 'marry', 'tony', '老猪', 'AnNi'} for i in set1: print(i)
3、不可变的数据类型
set2 = frozenset({1, 2, 3, 7}) # frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素 print(set2, type(set2)) # 不可变的数据类型 dic = {set2: 666} print(dic) for i in set2: print(i)
4、集合的增删改查
# 1、集合的创建 set1 = set({1, 2, 'barry'}) set2 = {1, 2, 'barry'} print(set1, set2) # 结果为:{1, 2, 'barry'} {1, 2, 'barry'} # 2、集合的增 set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry'} set1.add('景女神') print(set1) # 3、update:迭代着增加 set1.update('A') print(set1) set1.update('老师') print(set1) set1.update([1, 2, 3]) print(set1) # 4、集合的删 set1 = {'alex', 'wusir', 'ritian', 'egon', 'barry'} set1.remove('alex') # 删除一个元素 print(set1) set1.pop() # 随机删除一个元素 print(set1) set1.clear() # 清空集合 print(set1) del set1 # 删除集合 print(set1)
5、集合的其他操作:
# 1、交集 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1 & set2) # {4, 5} print(set1.intersection(set2)) # {4, 5} # 2、并集。(| 或者 union) set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8} print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7,8} # 3、差集。(- 或者 difference) set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1 - set2) # {1, 2, 3} print(set1.difference(set2)) # {1, 2, 3} # 4、反交集。 (^ 或者 symmetric_difference) set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} print(set1 ^ set2) # {1, 2, 3, 6, 7, 8} print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8} # 5、frozenset 不可变集合,让集合变成不可变类型。 s = frozenset('barry') print(s, type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>
四、深浅copy
1.