其他分享
首页 > 其他分享> > 基本数据类型及内置方法

基本数据类型及内置方法

作者:互联网

一、深浅copy(*)(相对底层原理)
#默认情况下都是浅copy
""" #遍历:所有取一遍
l1 = [111,222,[333,444]] #所有可以被for循环遍历的类型都可以传给list然后转换成列表
l2 = l1.copy()
l3 = l1[:]
#print(id(l1[0]),id(l1[1]),id(l1[2]))
#print(id(l2[0]),id(l2[1]),id(l2[2]))
#l1[2][0] = 666
l1[0] = 777
print(l1)
print(l2)
man = ["上海",[100,]]
woman = man.copy()
man[1][0] -= 30
print(man)
print(woman)
"""
当直接改变原变量的不可变类型的元素,对浅拷贝无影响
当直接改变原变量的可变类型的元素,对浅拷贝有影响
#2、深copy
from copy import deepcopy
l1 = [111,222,[333,444]]
l2 = deepcopy(l1)
print(id(l1[0]),id(l1[1]),id(l1[2]))
print(id(l2[0]),id(l2[1]),id(l2[2]))
l1[2][0] = 666
print(l1)
print(l2)
#l1[0] = 777
#print(l1)
深拷贝每一层都拷贝
每层拷贝又分两种情况
遇到索引为可变类型 创建新的
遇到索引为不可变类型 原封不动拿下来
在当前层再无发现可变类型了,结束拷贝
二、集合类型(一种不常用数据类型)
#======set基本使用===========
1、用途:
(1)关系运算
(2)去重
#pythons = ["egon",'lxx',"张全蛋","李铁蛋",'刘金蛋',"赵银弹"]
#linuxs = ['lili','jack','egon','lxx','tom','kkk']
#l = []
#for stu in pythons:
#if stu in linuxs:
l.append(stu)
#print(l)
#2、定义方式: 在{}内用逗号分割开多个元素,需要注意的是集合的元素必须满足
#1、集合的元素必须是不可变类型
#2、集合的元素无序
#3、集合的元素没有重复
#s = {}
#print(type(s)) # 空字典
#s = set() # 定义空集合
#s = {1,'a',2,'b',3,'b','b','b'} # s=set({1,2,3})
#print(type(s))
#print(s)
#set数据类型转换
#res = set("hello")
#res = set([111,222,333,111,[666,777]])
#print(res)
#3、常用操作+内置的方法
#3.1 去重
student = [
{"name":"egon1","age":18,"gender":'male'}
{"name":"egon2","age":19,"gender":'female'},
{"name":"egon3","age":17,"gender":'female'},
{"name":"egon1","age":18,"gender":'male'},
{"name":"egon1","age":18,"gender":'male'},
]
#new_l = []
#for info in student:
#if info not in new_l:
#new_l.append(info)
#print(new_l)
pythons = {"egon",'lxx',"张全蛋","李铁蛋",'刘金蛋',"赵银弹"}
linuxs = {'lili','jack','egon','lxx','tom','kkk'}
##(1)交集:求既报名pyton又报名linux的学员姓名
#print(pythons & linuxs)
#print(pythons.intersection(linuxs)) #intersection:交叉 ; section:部分,截面
##(2)并集:求所有学生姓名
#print(pythons | linuxs)
#print(pythons.union(linuxs))
#(3)差集: 求只报名python的学员姓名
#print(pythons - linuxs)
#print(pythons.difference(linuxs))
#print(linuxs - pythons)
#(4)对称差集:求没有同时报名两门课程的学员
#res = (pythons - linuxs) | (linuxs - pythons)
#res = pythons ^ linuxs
#print(res)
res = pythons.symmetric_difference(linuxs) #symmetric:对称的,匀称的
print(res)
#(5) 父子集:父子指的包含与被包含的关系
#父集:>=
#子集:<=
#s1 = {1,2,3}
#s2 = {1,2}
#print(s1 >= s2) # >=等同于.issuperset
#print(s1.issuperset(s2))
#print(s2 <= s1) # <=等同于.issubset
#print(s2.issubset(s1))
#s1 = {1,2,3}
#s2 = {1,2,4}
#print(s1 > s2)
#print(s1 < s2)
#s1 = {1,2,3}
#s2 = {1,3,2}
#print(s1 == s2)
#s1 >= s2
#了解的内置方法
s1 = {'a',1,2,3}
#res = s1.pop() #随机删一个
#res = s1.remove(2) #指定删,无返回值
#s1.remove(4) 删除不存在元素会报错
s1.discard(2) 删除不存在元素并不会报错
#print(s1)
#print(res)
#s1.add(4) #一次加一个
#s1.update({4,5,6,3}) #再传一个集合进去
#s1 = s1.difference({3,4,5})
#s1.difference_update({3,4,5})
#print(s1.isdisjoint({3,4,5,6})) #无交集为真
#print(s1)
s1 = {111,222,333,444,555}
for x in s1:
print(x)
#================该类型总结====================================
#存多个值 #无法取某个值
#无序
#set集合可变,frozenset不可变集合
#s1 = {1,2,3}
#print(id(s1))
#s1.add(4)
#print(id(s1))
#s2 = frozenset({1,2,3})
#print(type(s2))

标签:内置,s1,数据类型,linuxs,l1,print,方法,id,pythons
来源: https://blog.51cto.com/15129993/2665768