python (五)小数据池、copy、文件操作

时间:2022-09-06 12:00:46

一、编码进阶

# 字符串转换成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.