1. set集合, 不重复, 无序
2. 深浅拷贝
1. 直接赋值, 两个变量指向同一个对象.
2. 浅拷贝:只拷贝第一层内容. copy()
3. 深拷贝:对象中的所有内容都会被拷贝一份
import copy
copy.deepcopy()
# 去重
lst = [1,2,4,7,2,5,3,5,6,7,3] ret = set(lst) print(ret) # 输出: {1, 2, 3, 4, 5, 6, 7} ret.add(1) # 在集合中添加,但是重复的不会添加 print(ret) # 输出: {1, 2, 3, 4, 5, 6, 7} # 在变成列表类型 lst = list(ret) print(lst) # 输出: [1, 2, 3, 4, 5, 6, 7]
# 1. 直接赋值, 两个变量指向同一个对象
lst = ['语文','数学','英语','地理','化学'] lst1 = lst lst1.append('物理') # 对其中的一个进行操作, 两个都跟着变 print(lst1,lst) # 输出: ['语文', '数学', '英语', '地理', '化学', '物理'] ['语文', '数学', '英语', '地理', '化学', '物理'] print(id(lst),id(lst1)) # 输出(例): 1729821762184 1729821762184 # 地址都是一样的,说明:两个变量指向同一个对象
# 2. 浅拷贝:只拷贝第一层内容 copy(),创建新对象
lst1 = ['中国','美国','俄国','法国','英国',['五大常任理事国','以及其他国家']] lst2 = lst1.copy() # lst1 和lst2 不是一个对象了 lst1.append('印度') print(lst1,lst2) # 输出: ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家'], '印度'] # ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家']] print(id(lst1),id(lst2)) # 输出(例): 2822165258952 2822165761352 # 地址不一样,说明: 两个变量不是指向同一个对象 lst1[5].append('印度尼西亚') print(lst1) # 只拷贝第一层内容,到第二层里还是可以都添加进去 print(lst2) # 输出: ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家', '印度尼西亚']] # ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家', '印度尼西亚']] # lst2 = lst1[:] # 切片会产生新的对象, lst1 = ['中国','美国','俄国','法国','英国',['五大常任理事国','以及其他国家']] lst2 = lst1[:] lst2.append('澳大利亚') print(lst2) print(lst1) # 输出: ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家'], '澳大利亚'] # ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家']] print(id(lst1),id(lst2)) # 输出(例): 1831290561224 1831320161672 # 地址不一样,对于我来说,相当于浅拷贝 lst2[5].append('澳大利亚') print(lst2) print(lst1) # 输出: ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家', '澳大利亚']] # ['中国', '美国', '俄国', '法国', '英国', ['五大常任理事国', '以及其他国家', '澳大利亚']]
# 3. 深拷贝:对象中的所有内容都会被拷贝一份
import copy lst1 = ['变形金刚','侏罗世纪公园','街舞','学生',['老师','教授']] lst2 = copy.deepcopy(lst1) # 把lst1扔进去进行深度拷贝 包括内部的所有内容进行拷贝 lst1[4].append('教师') print(lst1, lst2) # 输出: ['变形金刚', '侏罗世纪公园', '街舞', '学生', ['老师', '教授', '教师']] # ['变形金刚', '侏罗世纪公园', '街舞', '学生', ['老师', '教授']] print(id(lst1), id(lst2)) # 输出(例): 1813244593736 1813274316552
# 1. 为什么要有深浅拷贝? # 因为拷贝比创建对象的过程要快