Python笔记-集合,拷贝

对于列表,元组,集合的异同,有如下解释

#list ----> 允许重复的集合,修改
# tuple ----> 允许重复的集合,不修改
# set ----> 不允许重复的集合
下面是示例代码:
 1 s1 = set()
 2 s2 = {1,2,3,4}
 3 s3 = set([11,22,33,44])
 4 s4 = {3,4,5,6,89}
 5 print type(s2)   #<type 'set'>
 6 s1.add(44)
 7 print s1         #set([44])
 8 s1.clear()
 9 print s1         #set([])
10 print s2.difference(s4)  #set([1, 2]) (s1中存在,s2中不存在的)
11 
12 print s2        #set([1, 2, 3, 4])
13 diff = s2.difference_update(s4)
14 print s2        # s1中存在,s2中不存在的,更新s1,  set([1, 2])
15 print diff
16 
17 s3.discard(44)
18 print s3
19 s3.discard(55)      #要移除的元素不存在时,不报错
20 print s3
21 s3.remove(66)       #要移除的元素不存在时,报错
22 
23 s5 = {77,88,99}
24 s6 = {88,77}
25 ret1 = s5.intersection(s6)
26 print ret1      #取交集  set([77])
27 
28 s5.intersection_update(s6)
29 print s5       #取交集,更新s5
30 ret2 = s5.isdisjoint(s6)
31 print ret2     #有交集是false
32 
33 ret3 = s5.issubset(s6)
34 print ret3      #判断s5是否为s6的子序列
35 
36 ret4 = s5.issuperset(s6)
37 print ret4     #判断s5是否为s6的父序列
38 
39 ret5 = s6.pop()
40 print ret5     #88
41 print s6       #set([77])
42 
43 ret6 = s2.symmetric_difference(s4)
44 print ret6     #set([1, 2, 5, 6]) s2中存在的,s4不存在,+ s4存在,s2不存在
45 
46 ret7 = s2.union(s4)
47 print ret7     #set([1, 2, 3, 4, 5, 6])取并集
48 
49 s2.update(s4)
50 print s2        #set([1, 2, 3, 4, 5, 6, 89])并在一起

三元运算的形式:name = 值1 if 条件 else 值2

下面是普通的运算:

1 if 1 == 1 :
2     name = "alex"
3 else:
4     name = "eric"
5 print name

下面是三元运算:

1 name = "alex" if 1 == 1 else "eric"
2 print name

拷贝:字符串数字,拷贝,赋值,地址深浅拷贝无意义,因为字符串的优化机制,ID都是一样的


1 import copy
2 n1 = 123
3 print id(n1)
4 n2 = n1
5 print id(n2)
6 n3 = copy.copy(n1)
7 print id(n3)

深拷贝全部拷贝,除了最内一层,浅拷贝只拷贝了最外面一层,所以K1的ID是一样的。
1 n4 = {"k1":"wu","k2":123,"k3":["alex",456]}
2 n5 = copy.copy(n4)
3 print "n4 id:" + str(id(n4))
4 print "n5 id:" + str(id(n5))
5 
6 print id(n4['k1'])
7 print id(n5['k1'])
8 #39516400
9 #39516400
 
 
原文地址:https://www.cnblogs.com/nurruden/p/5539076.html