集合与深浅copy
一 :集合
定义空集合: a = set()
1.集合的元素必须是可哈希的,并且集合是无序的,元素具有互异性
集合的增删改查:
增:
set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('景女神')
print(set1) #{'ritian', 'alex', '景女神', 'wusir', 'barry', 'egon'}
#update:迭代着增加
set1.update('A')
print(set1)
set1.update('老师')
print(set1)
set1.update([1,2,3])
print(set1) #重复着加进列表内
删:
set1 = {'alex','wusir','ritian','egon','barry'}
set1.remove('alex') # 删除一个元素
print(set1)
set1.pop() # 随机删除一个元素
print(set1)
set1.clear() # 清空集合
print(set1)
del set1 # 删除集合
print(set1)
集合的其他操作:
交集,并集,子集,超集
二:深浅copy
浅copy:
li = [1,2,3,4,5,6,7,8,9]
1.格式:
print(li[ : ]) 利用切片 #[1,2,3,4,5,6,7,8,9]
l1=li.copy() #[1,2,3,4,5,6,7,8,9]
浅拷贝:拷贝的是值,li和l1的ID是不一样的
l1=li.copy()
print(l1 is li) #False
但是:
li = [1,2,3,4,5,6,7,8,9,[2,6]]
l1=li.copy()
print(li is l1)
print(li[9] is l1[9]) 拷贝的时候讲被嵌套的列表拷贝的是ID #True
当被嵌套列表的元素发生改变的时候,拷贝后的列表中的嵌套元素也会发生改变
li = [1,2,3,4,5,6,7,8,9,[2,3]] l1 = li.copy() li[9].append(6) print (li) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3, 6]] print (l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3, 6]] print ( li[9] is l1[9]) #True
如果只是在第一层列表进行值的修改,则不会传递到拷贝后的列表
li = [1,2,3,4,5,6,7,8,9,[2,3]] l1 = li.copy() li.append(6) print (li) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3], 6] print (l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3]] print ( li[9] is l1[9]) #True print (li is l1) #False
深拷贝:
格式:
li.deepcopy() #将他所有的元素全部拷贝,被嵌套的列表里的元素也会被copy,而不是copy被嵌套列表的ID,所以值改变不管在哪都不会传递
import copy #引入copy模块 li = [1,2,3,4,5,6,7,8,9,[2,3]] l1 =copy.deepcopy(li) li[9].append(6) li.append(6) print (li) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3, 6], 6] print (l1) #[1, 2, 3, 4, 5, 6, 7, 8, 9, [2, 3]] print ( li[9] is l1[9]) #False print (li is l1) #False

浙公网安备 33010602011771号