深度拷贝,集合,字符串拼接

一、深度拷贝:

(一般了解)

1、浅拷贝:

s=[[1,2],'alex','asada']
s2=s.copy()
print(s2)
s2[0][1]=3
print(s2)
print(s)

 

从该程序中可知,当第二层列表中元素被修改后,原列表内容也发生变化,这是因为元素修改,改变了列表指针,使得s列表s[0]元素指向元素发生变化。如图所示:

修改列表后,原列表发生变化(原因:a列表指针发生变化,造成原列表中列表数据变化)

浅拷贝:只拷贝第一层

深拷贝:全部拷贝

s3=[1,'alex','asada']
s4=s3.copy()
s4[0]=2
print(s4)
print(s3)

2、深度拷贝:

import copy
s=[[1,2],'alex','asada']
s2=copy.deepcopy(s)#深拷贝操作
print(s2)
s2[0][1]=3
print(s2)
print(s)

注意:深度拷贝操作后,即使新列表第二层被修改,原列表依然不变。

二、集合:

1、创建方法:

set() ,frozenset()

s=set('alex li')
print(s,type(s))

集合可将重复元素去除,数据类型为set

注:集合对象是一组无序排列可hash的值,集合成员可以做字典的键

2、访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

3、更新集合:
s.add()    s.update()    s.remove()

1 s2=set('alvin')
2 s2.add('mm')
3 print(s2)  #{'mm', 'l', 'n', 'a', 'i','v'}
1  s2.update('HO')#添加多个元素
2 print(s2)  #{'mm', 'l', 'n', 'a', 'i', 'H', 'O', 'v'}
1 s2.remove('l')
2 print(s2)  #{'mm', 'n', 'a', 'i', 'H', 'O', 'v'}

del:删除集合本身

4、集合类型操作符:
     1、in not in
     2、集合等价于不等价(==,!=)
     3、子集,超集

1 s=set('alvinyuan')
2 s1=set('alvin')
3 print('v'  in s)
4 print(s1<s)#True-------------s1是s的子集

    4、联合(|): 联合(union)操作与集合的or操作其实等价的,联合符号有个等价的方法,union()。    并集操作

1 s1=set('alvin')
2 s2=set('yuan')
3 s3=s1|s2
4 print(s3) #{'a', 'l', 'i', 'n', 'y', 'v', 'u'}
5 print(s1.union(s2)) #{'a', 'l', 'i', 'n', 'y', 'v', 'u'} 

   5、交集(&):与集合and等价,交集符号的等价方法是intersection()

1 s1=set('alvin')
2 s2=set('yuan')
3 s3=s1&s2
4 print(s3)#{'n', 'a'}  
5 print(s1.intersection(s2)) #{'n', 'a'}

   6、差集(-):等价方法是difference()

 1 s1=set('alvin')
 2 s2=set('yuan')
 3 s3=s1-s2
 4 print(s3)#{'v', 'i', 'l'}
 5  
 6 print(s1.difference(s2)) #{'v', 'i', 'l'}
 7 
 8 s4=s2-s1
 9 print(s4)#{'y','u'}
10 print(s2.difference(s1)) #{'y','u'}

  7、对称差集(^):对称差分是集合的XOR(‘异或’),取得的元素属于s1,s2但不同时属于s1和s2.其等价方法symmetric_difference()

1 s1=set('alvin')
2 s2=set('yuan')
3 s3=s1^s2
4 print(s3)  #{'l', 'v', 'y', 'u', 'i'}
5  
6 print(s1.symmetric_difference(s2)) #{'l', 'v', 'y', 'u', 'i'}

 三、字符串拼接:

1、字符串拼接:

1 v = 'i am %s, my hobby is basketball' %'alex'
2 print(v) #i am alex, my hobby is basketball

******************%s可以接收任何值,序列,但是%d只能接收数字************************

1 v='i am %s, my list is %s' %('alex', [1,2])
2 print(v) #i am alex, my list is [1, 2]
1 v='My name is %s, i am %d' %('alex', 18)
2 print(v) #My name is alex, i am 18

2、打印小数,浮点数:

1 v1 = "percent %f" % 99.9762343423   #默认保持6位
2 v2 = "percent %.2f" % 99.9762343423   #保持2位
3 print(v1) #percent 99.976234
4 print(v2) #percent 99.98

3、打印百分比:

v="percent %.2f %%" %99.9762343423
print(v) #percent 99.98 %

4、接收字典:

1 v="My name is %(name)s, i am %(age)s" %{"name":"alex","age":18}
2 print(v) #My name is alex, i am 18

四、format字符串格式化:

1 v="My name is {},and I am {}".format("alex",18)
2 print(v) #My name is alex,and I am 18
元组形式
1
v="Hello! {0},My name is {1},and I am {2}".format("Alex","Haword",18) 2 print(v) #Hello! Alex,My name is Haword,and I am 18
1 v="My name is {name}, I am {age}".format(name="Alex",age=18)
2 print(v) #My name is Alex, I am 18
原文地址:https://www.cnblogs.com/dylee/p/10766402.html