python day 07-数据类型补充,集合,深浅拷贝

时间:2021-11-11 14:15:08

一、基础数据类型补充

1.列表转字符串

a='A'.join(['c','c','s'])
print(a)

2.循环删除列表中的每⼀一个元素

lst=['asdf','dftgst','zsdrfse']
for i in range(0,len(lst)):
lst.pop()
print(lst)

3.

类型转换:
元组 => 列列表 list(tuple)
列列表 => 元组 tuple(list)
list=>str str.join(list)
str=>list str.split()
转换成False的数据:
0,'',None,[],(),{},set() ==> False

二、set 集合

1.set:不可重复,无序,里面的元素必须是可哈希的(int, str, tuple,bool),我们可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示

2.增

a={'sdfs','sdfsf'}
a.add('ad')
print(a)
s.update("麻花藤") # 迭代更新

3.删

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
item = s.pop() # 随机弹出⼀一个.
print(s)
print(item)

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
s.remove( '关之琳') #如果不存在会报错
print(s)
set.clear()#清空列表

4.查

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟玉", "李李若彤"}
for i in s :
print(i)

5.改

# set集合中的数据没有索引. 也没有办法去定位⼀一个元素. 所以没有办法进⾏行行直接修改.
# 我们可以采⽤用先删除后添加的⽅方式来完成修改操作
s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"}
# 把刘嘉玲改成赵本⼭山
s.remove("刘嘉玲")
s.add("赵本山")
print(s)

三、深浅拷贝

lst1 = ["⾦金金⽑毛狮王", "紫衫⻰龙王", "⽩白眉鹰王", "⻘青翼蝠王"]
lst2 = lst1
print(lst1)
print(lst2)
lst1.append("杨逍")
print(lst1)
print(lst2)
#lst1变lst2也会变

2.浅拷贝. 只会拷贝第一层. 第二层的内容不会拷贝. 所以被称为浅拷⻉.。

lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王", "青翼蝠王"]
lst2 = lst1.copy()
lst1.append("杨逍")
print(lst1)
print(lst2)
#lst1变lst2不会变
lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王",["青翼蝠王"] ]
lst2 = lst1.copy()
lst1[3].append("杨逍")
print(lst1)
print(lst2)
#lst1变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