day08 set的功能,创建方法。和字典的创建其他方法及字典的
set的创建方法和字典的创建方法
'''
set 是一个无序的、不重复的集合容器。会自动过滤重复的元素。
set的创建方法:1、set() -> new empty set object
2、set(iterable) -> new set object
注:创建一个空的set,不能set1={},因为这表示的是一个字典。
'''
#创建一个长度为0的set
set1=set()
print(set1)
print(type(set1))
print(len(set1))
#set的自动去重复
set1={1,2,3,1,2}
print(set1)
#set后面加一个可迭代的,可以直接创建set
set2=set([0,1,2,0,1])
print(set2)
set2=set('abc')
print(set2)
print('*********************华丽的分割线*********************')
'''
字典的创建方法:
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
'''
#dict()
infos1 = {'a':1,'b':2}
print(type(infos1))
infos2 = dict(infos1)
print(infos2)
#dict(iterable)
infos1 = [('a',1),('b',2)]
print(dict(infos1))
for m,n in infos1:
print('m=%s,n=%s'%(m,n))
#dict(**kwargs)
infos1=dict(one=1, two=2)
print(infos1)
#set也是可以遍历的。
mySet = {1,2,3,4}
for i in mySet:
print(i)
set的功能
#set.add()新增
set1={0,1,2}
set1.add(6)
print(set1)
#set.remove()移除
set2={1,2,3}
set2.remove(1)
print(set2)
#set 的并,交,差,得到的是一个新的集合set,不改变原来的。
set1={0,1,2}
set2={1,2,3}
print(set1 | set2)
print(set1 & set2)
print(set1 - set2)
print(set1)
print(set2)
#set的其他功能,作为了解即可。
#1、set.update(x)将集合x并入原集合s中,
#x 还可以是列表,元组,字典等,x 可以有多个,用逗号分开
set1={0,1,2}
set2={1,2,3}
set3=[5,6]
set1.update(set2,set3)
print(set1)
#2、set.discard( x )将 x 从集合s中移除,x只能为元素,
#若x不存在,那么什么也不做(do nithing),不会报错。
set1={0,1,2}
#set1.discard(0)
print('aaaaaaaaaaaaaa')
set1.discard(5)
print(set1)
#3、pop()随机删除并返回集合s中某个值
set1={0,1,2}
a=set1.pop()
print(a)
#4、clear() 清空所有的set内的元素
set1={0,1,2}
set1.clear()
print(set1)
#5、判断 x in s set同样支持in操作 结果是True时,x是元素。
set1={0,1,2}
set2={0}
print(0 in set1)
print(set2 in set1)
#6、union(x) 并集 得到的是一个新的集合set,不改变原来的
set1={0,1,2}
set2={1,2,3}
print(set1.union(set2))
print(set1)
#7、intersection(x) 交集 得到的是一个新的集合set,不改变原来的
set1={0,1,2}
set2={1,2,3}
print(set1.intersection(set2))
print(set1)
#8、difference(x) 差集 得到的是一个新的集合set,不改变原来的
set1={0,1,2}
set2={1,2,3}
print(set1.difference(set2))
print(set1)
#9、s.issubset(x) 判断 集合s 是否是 集合x 子集
set1={0,1,2,3}
set2={1,2,3}
print(set2.issubset(set1))
#10、x.issuperset( s ) 判断 集合s 是否是集合x的子集
set1={0,1,2,3}
set2={1,2,3}
print(set1.issuperset(set2))
字典的其他方法
'''
字典的复制dict.copy(),内容一样,地址不相同。
判断内容是否相同:==
判断地址是否相同:is
查看地址用 id
'''
di1={'name':'年华','age':18,'sex':'男'}
di2=di1.copy()
print(di1)
print(di2)
print(id(di1))
print(id(di2))
print(id(di1)==id(di2))
print(di1==di2)
print(di1 is di2)
print('*'*60)
'''
dict.fromkeys(seq[, val]))
seq表示可以迭代的,eg列表、字符串、元组。vaule默认值为None
'''
di1={'name':'年华','age':18,'sex':'男'}
ls=[1,2,3]
a=di1.fromkeys(ls)
print(a)
b=di1.fromkeys(ls,'年华')
print(b)
str1='jkl'
a=di1.fromkeys(str1)
print(a)
b=di1.fromkeys(str1,'年华')
print(b)
'''
dict.setdefault(key, default=None),
如果有这个键,则返回字典里的值。
如果没有这个键,则返回default。
'''
di1={'name':'年华','age':18,'sex':'男'}
a=di1.setdefault('name','哈哈')
print(a)
print(di1)
a=di1.setdefault('hobby','呵呵')
print(a)
print(di1)
'''
dict.update(dict2):把字典dict2中的键值对更新到dict
'''
di1={'name':'哈哈'}
di2={'age':20}
di1.update(di2)
print(di1)
print(di2)
'''
字典与列表的对比:
字典特点:1、查找速度快,不会随着键的增加而变慢。
2、需要占用大量的内存,因为字典存的是键值对。内存浪费多。
列表的特点:1、查找和插入的时间随着元素的增加而增加。查找的速度慢。
2、占用的空间小,浪费内存较小。
'''