set:集合是一个无序不重复元素的集(用哈希算法计算位置)。
哈希算法不能计算list;set集合没有下标。
set();创建有内容的集合,若内容是集合,且集合里只有一个字符串,如{'acbcv'},set()不会把字符串分割。
哈希算法不能计算list;set集合没有下标。
集合对象还支持union(联合),intersection(交),difference(差),sysmmetric difference(对称差集)等数学运算。
大括号或set()函数可以用来创建集合。
注意:要创建空集合,必须用set(),不能用{}大括号来创建空集合。
set()可以将字符串、列表、元组、字典转换成set集合类型,在字典转换为set集合类型的时候,可以加keys()或value()方法分别只取key或value转换 。
set1=set();#创建空集合
set2={1,2,3,4,5}
set2_1=set({'a','ss',132,343.03,(33,33,44),True})
set3=set({1:1,2:2,3:3,})
set4=set({1:1,2:2,3:3,}.values)
set5=set([1,2,3,4,5])
set6=set((1,2,3,4,5))
用pyCharm时,某一属性或方法属于谁,提示的时候会显示在方法的后面。
add():向集合里添加一个元素,添加集合里面已经有的元素,后添加的元素会把已经有的相同的元素替换掉。
remove():删除,删除集合中不存在的会报错。
clear():清空集合。
pop():从集合中随机删除一个值,并返回删除的值;pop()不能加参数。
a={'a','b','c',"d","e"}
b=set(["a","b",'z',"y"])
print(a)
print(b)
#演示联合
print(a | b)
#演示交集,返回a、b中重复的
print(a & b)
#演示差集,a-b会返回a里面b没有的,b-a会返回b里面a没有的。
print(a-b)
#对称差集,用一个集合返回a、b中两者特有的;a、b中不重复的
print(a^b)
练习题:答案:
flag=True;
names=[];
phones=[];
while flag:
print('\n\n=====通讯录管理系统=====');
print('1、添加i姓名和手机号');
print('2、删除姓名');
print('3、修改手机号');
print('4、查询所有用户');
print('5、根据姓名查找手机号');
print('6、退出');
print('========================');
i=int(input('请选择:'));
if i==6:
flag=False;
elif i==1:
names.append(input('请输入姓名:'));
phones.append(input('请输入手机号:'));
elif i==2:
name=input('请输入你要删除的姓名:');
if name in names:
index=name.index(name);
names.pop(index)
phones.pop(index)
else:
print('用户名不存在!')
elif i == 3:
phone=input('请输入要修改的手机号:')
if phone in phones:
new_phone=input('请输入新的手机号:')
index=phones.index(phone)
phones[index]=new_phone
print('修改成功!')
else:
print('手机号不存在!')
elif i==4:
for i in rang(len(names)):
print(names[i],phones[i])
elif i==5:
name=input('你想要查看谁的手机号,请输入他的姓名:')
if name in names:
index=name.index(name)
print('手机号:',phones[index])
else:
print('姓名不存在!')
用字典做练习题:
flag=True;
User={};
while flag:
print('\n\n=====通讯录管理系统=====');
print('1、添加i姓名和手机号');
print('2、删除姓名');
print('3、修改手机号');
print('4、查询所有用户');
print('5、根据姓名查找手机号');
print('6、退出');
print('========================');
i=int(input('请选择:'));
if i==6:
flag=False;
elif i==1:
name=input('请输入姓名:');
phone=input('请输入手机号:');
User[name]=phone;
elif i==2:
name=input('请输入你要删除的姓名:');
if name in User:
del User[name]
print('删除成功!')
else:
print('用户名不存在!')
elif i == 3:
name=input('请输入姓名:')
if name in User:
new_phone=input('请输入新的手机号:')
User[name]=new_phone;
print('修改成功!')
else:
print('手机号不存在!')
elif i==4:
for k,v in User.items():
print(k,v)
elif i==5:
name=input('你想要查看谁的手机号,请输入他的姓名:')
if name in User:
print('手机号是:',User[name])
else:
print('姓名不存在!')
set();创建只有一个内容的集合,且内容是一串字符串,set()会把里面的字符串分割,其他几种类型的数据不会被分割。
set();创建有内容的集合,若内容是集合,且集合里只有一个字符串,如{'acbcv'},set()不会把字符串分割。
a=set('a','s','d','f','g')
b=set('a','z','s','x','c','v')
#把a、b进行合并,方法1:
a=a|b
print(a)
#把a、b进行合并,方法2:
a=set('a','s','d','f','g')
b=set('a','z','s','x','c','v')
a.update(b)
print(a)
a.update('1234')
print(a)