18.07.10

一.补充基础数据类型的相关

1.str的相关操作  join()

例:

s='abc'
s1=s.join("非常可乐")
print(s1) ==<非abc常abc可abc乐>

例:

s='_'.join(['非','常','可','乐'])
print(s) ==<非_常_可_乐>

join可以把列表变成字符串

split可以把字符串变成列表

2.list列表

list在循环的时候不能删除,因为会改变索引.

例:

lst=["周杰伦","周润发","周星星","马化腾","周树人"]
for el in lst:
lst.remove(el)
print(lst) ==<['周润发', '马化腾']>

例:

lst=["周杰伦","周润发","周星星","马化腾","周树人"]
del_lst=[]
for el in lst:
if el[0]=="周":
del_lst.append(el)
for el in del_lst: #循环记录的内容
lst.remove(el) #删除原列表的内容
print(lst) ==<['马化腾']>

3.dict字典

dict中的元素在迭代循环的过程中不能执行新增和删除操作.

formkeys 需要一个静态字典,执行fromkeys命令后返回一个新字典和上面定义的字典没有关系.

例:

dict={}
a=dict. fromkeys(['A','B','C'],'ab')
print(a) ==<{'A': 'ab', 'B': 'ab', 'C': 'ab'}>

 二.set集合   特点:去重

set中的元素是不重复的,无序的里面的元素必须是可哈希的(int,str,tuple,bool).

例:

s={'王者荣耀','英雄联盟','王者荣耀',123,True,True}
print(s) ==<{'英雄联盟', True, '王者荣耀', 123}>

(1)增:add()   update()

(2)删:pop()随机删除   remove()直接删除  clear()清空

(3)改:先删后增

(4)查:可迭代  for el in set:

set集合本身是可以发生改变的,是不可哈希的.我们可以使用frozenset来保存数据.frozenset是不可变的.也就是一个可哈希的数据类型.

例:

frozenset([1,3,6,6,9,8])
ss={'a',s}
print(ss) ==<{'a', frozenset({1, 3, 6, 8, 9})}>

三.深浅拷贝

字典,列表进行赋值操作,实际上是引用内存地址的赋值.内存中只有一个列表,两个变量指向一个列表.

例:

lst=["周杰伦","周润发","周星星",]
lst1=lst #赋值内存地址一样
lst.append("周树人")
print(lst,lst1) ==<['周杰伦', '周润发', '周星星', '周树人'] ['周杰伦', '周润发', '周星星', '周树人']>

1.浅拷贝  copy  只拷贝第一层

例:

lst=["周杰伦","周润发","周星星",]
lst2=lst.copy() == lst2=lst[:]
lst.append("周树人")
print(lst,lst2) ==<['周杰伦', '周润发', '周星星', '周树人'] ['周杰伦', '周润发', '周星星']>
print(id(lst),id(lst2)) ==<1991369433864 1991369433800>

2.深拷贝   deepcopy 深度拷贝包括内部的所有内容进行拷贝

例:

lst1=['A','B','C',['a','b','c']]
lst2=lst1.copy()
lst1[3].append("d")
print(lst1,lst2) lst1[3]和lst2[3]的内存地址相同
==<['A', 'B', 'C', ['a', 'b', 'c', 'd']] ['A', 'B', 'C', ['a', 'b', 'c', 'd']]>

例:

import copy
lst1=['A','B','C',['a','b','c']]
lst2=copy.deepcopy(lst1)
lst1[3].append("d")
print(lst1,lst2) ==<['A', 'B', 'C', ['a', 'b', 'c', 'd']] ['A', 'B', 'C', ['a', 'b', 'c']]>

拷贝比创建对象的过程快.

猜你喜欢

转载自www.cnblogs.com/gxj742/p/9289160.html