python集合

痴心易碎 提交于 2019-12-13 04:42:06

1.集合

# 不重复特点
list1 = [3,5,8,9,1,8,4,2,5,8,9]

#声明集合:set

s1 = set()

s2 = {}   #字典:{key:value,key:value,.....}  集合{元素1,元素2,元素3,.......}

print(type(s1))  #<class 'set'>
print(type(s2))  #<class 'dict'>


#应用
s3 = set(list1)

print(s3)

#增删改查

#1.增加  s1 = set()
s1.add('hello')

s1.add('小猪佩奇')

s1.add('lucy')

print(s1)

#add()  添加一个元素
#update()

t1 = ('林志玲','言承旭')
s1.update(t1)  #{'lucy', '小猪佩奇', '言承旭', '林志玲', 'hello'}

print(s1)

s1.add(t1)
print(s1)

#2.删除  remove 如果元素存在则删除,不存在则报错keyError   pop clear....
#   discard()
s1.remove('言承旭')

print(s1)

#s1.remove('道明寺')
#print(s1)

s1.pop()

print(s1)

s1.pop()

print(s1)


s1.clear()  #清空


2.练习

'''
1.产生10个1~20的随机数,去除里面的重复项
2.键盘输入一个元素,将此元素从不重复的集合中删除
'''

import random 

#list1 = []
#
## set1 = set()
#
#for i in range(10):
#	ran = random.randint(1,20)
#	list1.append(ran)   
#	
#
## set1.update(list1)
#set1 = set(list1)
#
#print(list1)
#
#print(set1)
#
#num = int(input('输入一个数字:'))
#
#set1.discard(num)
#
#print('删除之后结果:',set1)


#set1 = set()
#
#for i in range(10):
#	ran = random.randint(1,20)
#	set1.add(ran)
#
#print(set1)
#
#num = int(input('输入一个数字:'))
#set1.discard(num)
#print(set1.discard(num))
#
#print('删除之后结果:',set1)
#
#
#
##其他:符号操作
#print(6 in set1)

set2 = {2,3,4,5,6}
set3 = {2,3,4,5,6}

print(set2 == set3)

print(set2 != set3)

#set4 = set2+set3
#print(set4)   #TypeError: unsupported operand type(s) for +: 'set' and 'set'

set4 = set2-set3  #差集   difference()
print(set4)

print('----------------')
set5 = set3.difference(set2)
print(set5)

# &   交集

set6 = set3 & set2
print(set6)

set7 = set3.intersection(set2)
print(set7)

#  |  并集  union()   联合
set8 = set3 | set2

print(set8)

set9 = set3.union(set2)

print(set9)

'''
已知两个列表
l1 = [5,1,2,9,0,3]
l2 = [7,2,5,7,9]

找出两个列表的不同元素
找出两个列表的共同元素
'''



3.python交集差集

'''
已知两个列表
l1 = [5,1,2,9,0,3]
l2 = [7,2,5,7,9]

找出两个列表的不同元素
找出两个列表的共同元素
'''

l1 = [5,1,2,9,0,3]
l2 = [7,2,5,7,9]

s1 = set(l1)
s2 = set(l2)

#对称差集
print('==============')
result = (s1 | s2) - (s1 & s2)
print(result)  #{0, 1, 3, 7}

result = s1 ^ s2   #两个列表中不同的元素  symmetric_difference()

print(result)


'''
 difference_update()
	s1 = s1.difference(s2)
	print(s1)
	相同
	s1.difference_update(s2)
	
  intersection_update()  交集并赋值
  union_update()         并集并赋值
  symmetric_difference_update()    对称差集并赋值
'''

s1.difference_update(s2)
print('==============')
print(s1)

关键字:set
作用:去重

符号: - & | ^
内置函数:
增加:add() update()
删除:remove() discard() pop() clear()
运算: difference() intersection() union() symmetric_difference()

4.可变和不可变

#可变 和 不可变

# 不可变  : 对象所指向的内存中的值是不可以改变 

# 不可变的类型: int str float  元组tuple

num = 10

s1 = 'abc'

print(id(s1))

s1 = 'abcd'
print(id(s1))

t1 = (3,5,6)

print(id(t1))

t1 = (3,5)
print(id(t1))

#可变的:对象所指向的内存中的值是可以改变

#可变类型: 字典dict  列表list

list1 = [1,2,3,4,5]
print(list1,id(list1))

list1.pop()
print(list1,id(list1))

dict1 = {1:'aa',2:'bb'}
print(dict1,id(dict1))

dict1.pop(1)
print(dict1,id(dict1))


6.类型转换


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!