集合和基础类型的填坑以及深浅拷贝
2018-10-29 15:31:18来源:博客园 阅读 ()
S2_Day1
一、集合
关键字 : set 是不可哈希的(可变的),也是无序的(没有索引),集合内的元素?必须是可哈希的(不可变得)。
定义是 s = {} #当里面没有元素的时候??表现为字典数据类型
方法:
增:
.add(元素)??? #随记添加在集合的某个位置
.update() #迭代添加
删:
.pop() #随机删除 ,有返回值,删除什么返回什么元素
.clear() #清空集合
del set #删除整个集合??
.??remove(元素)? #删除指定的元素
改:?
只能先用remove()把要改的元素删了,在把需要的元素添加进去??
集合的特性:
集合是可以天然去重????!
#面试题:1,lis = [1,2,1,2,1,25,1,5,6,9,8,115,226,11,22,11,22]?用一行代码去重?
print(list(set(lis)))? #将列表转换为集合去重,然后在换回列表即可
集合的其他操作:
& 和 intersectiion #取两个集合的交集 没有交集就返回空集合
|? #取两个集合的并集,合并两个集合
s - s1 #取后面相对于前面的补集??
s ^ s1 #反交集,取两个集合不重合的元素??
s < s1 #判断s是不是s1的子集
s1 > s #判断s1是不是s的父集
.frozenset(): #将集合冻住,即变成不可变得数据(可哈希)
a = frozenset({1,2,3,4})??????? #将集合冻住,变成不可变得数据,即可以当字典的键? dic[a :1] print(dicup)
二、二次编码
ASCII码不支持中文
Unicode 万国码 中文四个字节 英文两个字节?
utf-8 最少使用一个字节,欧洲两个字节,亚洲三个字节
gbk 中文两个字节,英文一个字节?
a = '你好黑' a . encode('gbk') #编码??? 括号里放编码方式,将其变为什么编码 a.decode(''gbk') #解码 ,必须用同一种编码方式
注意:用什么编码就用什么解码
#在国内windows系统默认使用gbk编码方式
#bytes 字节 是一个数据类型 是用来存储和传输
三、基础补充
#1.用for循环将列表清空 (错误方式)
lst = [1,2,3,4,5] for i in lst: #这种问题是for循环的循环机制导致的,这个是当for要循环的数据为空时,他就停止循环 lst.remove(i) #这样子删除不行,循环删除是位置上的值,当这个位置删除过 print(lst) #了,下次再循环就不会再删除这个位置了
#2.正确方式
lst = [1,2,3,4,5] for i in range(len(lst)): #通过for实现循环次数,但是并不参与删除操作 lst.pop(0) #默认删除最后一个,可以规避掉for的循环机制 print(lst) lst = [1,2,3,4,5] lst1 = [] #通过另建一个新表
for i in lst:
lst1.append(i) #使用另一个列表来规避掉for的循环机制
for k in lst1: lst.remove(k) print(lst)
#字典在for循环中是不能进行删除的,但是可以用方法规避在原字典使用for循环
dic = {'a':1,'b':2} dic1 = {} #通过建立一个新的字典 for i in dic:
dic1[i] = dic[i] #规避for的循环机制 for i in dic1: dic.pop(i) print(dic) dic = dict.fromkeys(['alex','wusir'],[]'太白','姗姗') # 第一个是键,第二是 dic['alex'].append('老村长') # 值,这个方法快速大量的建立很多值是一样的键值
对,他们用的值是一样的,所有的内存地址是一样的 print(dic)
四、深浅拷贝
注意只有使用了 .deepcopy方法才能进行深度拷贝!
import copy lst = copy.deepcopy(lst1)
浅拷贝: 拷贝的是第一层,将第一层的内容复制,第二级元素却公用一个内存地址,既将第一层没有第二层元素的元素复制到新的地址,有第二层元素的第一层元素还是共用的。
lst1 = ["何炅", "杜海涛","周渝?"] lst2 = lst1.copy() lst1.append("李嘉诚") print(lst1) print(lst2) print(id(lst1), id(lst2)) 结果: 两个lst完全不?样. 内存地址和内容也不?样. 发现实现了内存的拷? lst1 = ["何炅", "杜海涛","周渝?", ["麻花藤", "?芸", "周笔畅"]] lst2 = lst1.copy() lst1[3].append("?敌是多磨寂寞") print(lst1) print(lst2) print(id(lst1[3]), id(lst2[3])) 结果: ['何炅', '杜海涛', '周渝?', ['麻花藤', '?芸', '周笔畅', '?敌是多磨寂寞']] ['何炅', '杜海涛', '周渝?', ['麻花藤', '?芸', '周笔畅', '?敌是多磨寂寞']
深拷贝: 彻底拷贝,拷贝完之后两个内容完全不一样,内存地址也不一样?,就是说拷贝完之后的数据与原数据没有一点关系。
import copy lst1 = ["何炅", "杜海涛","周渝?", ["麻花藤", "?芸", "周笔畅"]] lst2 = copy.deepcopy(lst1) lst1[3].append("?敌是多磨寂寞") print(lst1) print(lst2) print(id(lst1[3]), id(lst2[3])) 结果: ['何炅', '杜海涛', '周渝?', ['麻花藤', '?芸', '周笔畅', '?敌是多磨寂寞']] ['何炅', '杜海涛', '周渝?', ['麻花藤', '?芸', '周笔畅']] 4447221448 4447233800 都不?样了.
#面试题: ??写出下面的结果
a = [1,2] a[1] = a print(a[1])?? 输出是: [1, [...]]
四,课堂随笔
#集合 ''' s = {} #空的{}代表空的字典,而不是集合 print(type(s)) ''' s = {1,2,3,4,5,6,7,8,9} #添加 s.add('a') #添加指定元素 s.update('alex') #添加可迭代元素 #删除 s.remove(1) #删除指定元素 s.pop() #随机删除 删除什么返回什么 s.clear() #清空集合 print(s) #字典自动去重 #基础补充 #1.用for循环将列表清空 (错误方式) ''' lst = [1,2,3,4,5] for i in lst: #问题是for循环的循环机制导致的,这个是当for要循环的数据为空时,他就停止循环 lst.remove(i) #这样子删除不行,循环删除是位置上的值,当这个位置删除过 print(lst) # 了,下次再循环就不会再删除这个位置了 ''' #2.正确方式 ''' lst = [1,2,3,4,5] for i in range(len(lst)): lst.pop(0) print(lst) ''' ''' lst = [1,2,3,4,5] lst1 = [] for i in lst: lst1.append(i) for k in lst1: lst.remove(k) print(lst) ''' #字典在for循环中是不能进行删除的 #但是可以用方法规避在原字典使用for循环 ''' dic = {'a':1,'b':2} dic1 = {} for i in dic: dic1[i] = dic[i] for i in dic1: dic.pop(i) print(dic) ''' ''' dic = dict.fromkeys(['alex','wusir'],[]'太白','姗姗') # 第一个是键,第二是 dic['alex'].append('老村长') # 值,这个方法快速大量的建立很多值是一样的键值对,他们用的值是一样的,所有的内存地址是一样的 print(dic) ''' #深浅拷贝 #1.浅拷贝 a = [1,2] a[1] = a print(a[1])
lst1
=
[
"何炅"
,
"杜海涛"
,
"周渝?"
]
lst2
=
lst1.copy()
lst1.append(
"李嘉诚"
)
print
(lst1)
print
(lst2)
print
(
id
(lst1),
id
(lst2))
结果:
两个lst完全不?样. 内存地址和内容也不?样. 发现实现了内存的拷?
lst1
=
[
"何炅"
,
"杜海涛"
,
"周渝?"
, [
"麻花藤"
,
"?芸"
,
"周笔畅"
]]
lst2
=
lst1.copy()
lst1[
3
].append(
"?敌是多磨寂寞"
)
print
(lst1)
print
(lst2)
print
(
id
(lst1[
3
]),
id
(lst2[
3
]))
结果:
[
'何炅'
,
'杜海涛'
,
'周渝?'
, [
'麻花藤'
,
'?芸'
,
'周笔畅'
,
'?敌是多磨寂寞'
]]
[
'何炅'
,
'杜海涛'
,
'周渝?'
, [
'麻花藤'
,
'?芸'
,
'周笔畅'
,
'?敌是多磨寂寞'
]
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:打印一个九九乘法表
- python3基础之“术语表(2)” 2019-08-13
- python_0基础开始_day07 2019-08-13
- 【Python】语法基础 | 开始使用Python 2019-08-13
- Python基础总结之初步认识---class类的继承(终)。第十六天 2019-08-13
- python3基础之“小练习(3)” 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash