码迷,mamicode.com
首页 > 编程语言 > 详细

python 基础---集合

时间:2018-07-15 23:12:41      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:size   [1]   list   bsp   round   format   二层   基础   运算   

集合(set):可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。{}

 1 set1 = set({1,2,3})
 2 print(set1)
 3 
 4 #增 add,update
 5 set1 = {alex,wusir,ritian,egon,barry}
 6 set1.add(女神)
 7 print(set1) #无序
 8 #{‘女神‘, ‘egon‘, ‘barry‘, ‘wusir‘, ‘alex‘, ‘ritian‘}
 9 
10 set1.update(男神) #迭代增加,相当于list中的extend,按对象一个一个加
11 print(set1)
12 #{‘男‘, ‘女神‘, ‘egon‘, ‘barry‘, ‘wusir‘, ‘alex‘, ‘神‘, ‘ritian‘}
13 
14 #删  pop,remove,del, clear
15 set1.pop()  #随机删除,有返回值
16 print(set1)
17 
18 set1.remove(元素)  #按元素删除
19 print(set1)
20 
21 set1.clear()    #清空集合
22 print(set1)
23 
24 del set1      #删除集合
25 print(set1)
26 
27 #
28 for i in set1:
29     print(i)

 交集  &

 并集  |

 差集  -

 反交集  ^

子集和超集
1
set1 = {1,2,3} 2 set2 = {1,2,3,4,5,6} 3 4 print(set1 < set2) 5 print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。 6 7 print(set2 > set1) 8 print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。

 集合可变,元素不可变,使用frozenset变成集合不可变

1 s = frozenset(barry)
2 print(s,type(s))
3 for i in s:
4     print(i)

 

深浅copy

1 #赋值运算
2 l1 = [1,2,3]
3 l2 = l1
4 l1.append(a)
5 print("{}\t\t{}".format(l1,l2))
6 #[1, 2, 3, ‘a‘]        [1, 2, 3, ‘a‘]
 1 #浅copy
 2 l1 = [1,2,3]
 3 l2 = l1.copy()
 4 print(l1,l2)
 5 print(id(l1),id(l2))
 6 l2.append(a)
 7 print(l1,l2)
 8 """
 9 [1, 2, 3] [1, 2, 3]
10 1848031189768 1848031187272
11 [1, 2, 3] [1, 2, 3, ‘a‘]
12 """
 1 l1 = [1,2,[4,5,6],3]
 2 l2 = l1.copy()
 3 print(l1,id(l1))
 4 print(l2,id(l2))
 5 l1.append(a)
 6 print(l1,l2)
 7 l1[2].append(a)
 8 print(l1,l2)
 9 print(id(l1[2]))
10 print(id(l2[2]))
11 """
12 [1, 2, [4, 5, 6], 3] 2318104334664
13 [1, 2, [4, 5, 6], 3] 2318103951432
14 [1, 2, [4, 5, 6], 3, ‘a‘] [1, 2, [4, 5, 6], 3]
15 [1, 2, [4, 5, 6, ‘a‘], 3, ‘a‘] [1, 2, [4, 5, 6, ‘a‘], 3]
16 2318104337160
17 2318104337160
18 
19 """

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

深Copy

 1 import copy
 2 l1 = [1,2,[4,5,6],3]
 3 l2 = copy.deepcopy(l1)
 4 print(l1,id(l1))
 5 print(l2,id(l2))
 6 l1[2].append(a)
 7 print(l1,l2)
 8 
 9 l1 = [1,[1],2,3,4]
10 l2 = l1[:]
11 l1[1].append(a)
12 
13 print(l1,id(l1))
14 print(l2,id(l2))

对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

 

python 基础---集合

标签:size   [1]   list   bsp   round   format   二层   基础   运算   

原文地址:https://www.cnblogs.com/dzc18/p/9315123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!