python_基础数据类型补充

元祖:如果元祖中只有一个元素,且没有逗号,则该'元祖'与里面的数据的数据类型相同
s = ([2,1])
print(type(s))

列表:列表可以相加
l1 = [1,2]
l2 = ['a','b']
print(l1+l2)

字典
创建字典有三种方式
dic =
dic1 = dict({'age':18}){'name':'alex'}
fromkeys
param:可迭代对象,值
fromkeys 创键的字典都是指向同一个内存
dic2 = dict.fromkeys('abc',1)
print(dic,dic1,dic2)

dic = dict.fromkeys('abc',[1,2,3])
dic['a'].append(1)
print(id(dic['a']))
print(id(dic['b']))
print(id(dic['c']))

数据类型转换
dic = {'name':'alex','age':13}
print(list(dic.keys()))
print(list(dic.values()))
print(list(dic.items()))

元祖和列表可以互相转换
tu1 = (1,2)
li = [3,4,['a','b']]
print(list(tu1))
print(tuple(li))

字典转换成列表,只把字典的键转换成列表,列表不能转换成字典
dic = {'name':'alex','age':18}
li = [1,2]
print(list(dic))
print(dict(li))

集合
集合要求里面元素必须是不可变的数据类型
但是集合本身是可变的数据类型,集合里面是无序的,不重复的

列表去重可转换成set
li = [1,2,3,4,2,3,4]
l1 = set(li)
print(l1)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7}

set1.add('l')
set1.update('abc')
print(set1)


set1.pop() #随机删除
set1.remove(2) #根据元素删除
set1.clear() #清空
del set1 #删除内存中的集合
print(set1)

关系测试
交集
print(set1 & set2)
print(set1.intersection(set2))

并集
print(set1 | set2)
print(set1.union(set2))

反交集
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

差集
print(set1-set2)
print(set2-set1)
print(set1.difference(set2))
print(set2.difference(set1))

子集与超集
a = {1,2,3}
b = {1,2,4,3}
print(a<b)
print(a.issubset(b))
print(b.issuperset(a))

冻集合:不可变的数据类型
c = frozenset(set1)
print(c.add(9))
print(type(frozenset(set1)))

列表切片是浅copy
l1 = [12,3,2,3,[1]]
l2 = l1[:]
l1[4].append(6)
print(l1,l2)

浅copy:
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,
指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

深copy
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
 
 
posted on 2018-08-10 15:37  旧巷子里的猫  阅读(111)  评论(0编辑  收藏  举报