python集合

集合set的定义    

广义的集合的概念:某些指定的对象集在一起就成为一个集合,其中每一个对象叫元素,包含列表元组字典.

格式:集合名 ={ 元素1,元素2,…….}

例:my _set={1,3,5}

集合是无序的->不支持下标索引

集合是可变的数据类型

集合中的元素是唯一的       

集合一般用于元组或者列表中的元素去重       

定义一个空的集合 my_set=set()

注意:my_set = {} 这样的写法为一个空字典

定义空集合
my_set = set()
#定义空字典
my_dict = dict()
my_dict1 = {}
#定义空元组
my_tuple = tuple()
my_typle = ()
#定义空列表
my_list = []
my_list = list()

""
格式:集合名 ={ 元素1,元素2…….}
#
定义一个集合---->有一个字典,我们将这个字典所有的key取出来,放到一个新的数据形式中
集合的元素不能重复   和字典的键很像
集合的元素,只能是数字、字符串、元组
        不能是列表、字典

"""
my_set = set() #定义空集合
my_set = {} #这是字典
print(type(my_set))

#my_set2 = {1,2,3,4,5}
#集合是无序的,不能通过下标索引的形式 单独的取值
#print(my_set2[0])#'set' object is not subscriptable 可下标访问的

my_set3 = {1,2,3,44,44,5}#集合有去重的功能,集合中的元素是不能重复的
print(my_set3) #{1,2,3,5,44} 集合将重复的值去掉了

#集合中的元素的数据类型有哪些?
my_set4 = {"1","2","3","4","4"}
print(my_set4)

my_set5 = {(1,2),("3","4")}
print(my_set5)

#my_set6 = {[1,2,3],[1,2]}#集合的元素不能是列表  unhashable type: 'list'
#print(my_set6)

#my_set7 = {{1:2},{3:4},{5:6}}  #集合的元素不能是字典 unhashable type: 'dict'
#print(my_set7)

 集合的常见操作

.add-增加元素

#定义一个空集合
s1 = set()
#往里面 添加元素
s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
print(s1) #集合的元素是无序的

 .update-----可以添加多个元素

#定义一个空集合
s1 = set()
#往里面 添加元素
s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
print(s1) #集合的元素是无序的
tuple1 = ("林志玲","言承旭")
set2 = {"张三","李四"}
list3 = ["武松","宋江"]
dict4 = {"dict_key":"dict_value",}
s1.update(tuple1)
print(s1)
s1.update(set2)
print(s1)
s1.update(list3)
print(s1)
s1.update(dict4)  #如果update操作的是字典  添加的元素是字典的键
print(s1)
str1 = "alex"
s1.update(str1) #会将字符串拆分成单个字符 分别添加到集合中
print(s1)

 

.remove-如果元素存在则删除,不存在则报错:KeyError

s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
list3 = ["武松","宋江"]
s1.update(list3)
print(s1)
s1.remove("武松")
print(s1)
s1.remove("铁牛")  # 如果元素存在则删除,不存在则报错:KeyError:
print(s1)

 

.pop-随机删除

s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
print(s1) #集合的元素是无序的
#.pop #随机删除
s1.pop()
print(s1)  #每次删除的值都是不一样的

 

.discard-类似remove移除不存在的元素的时候不会报错

s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
list3 = ["武松","宋江"]
s1.update(list3)
print(s1)
s1.discard("宋江")
s1.discard("李逵")  # 如果元素不存在,不会报错
print(s1)

 

 

.clear-清空

s1.add("小猪佩奇")
s1.add("lucy")
s1.add("lily")
print(s1) #集合的元素是无序的
s1.clear()
print(s1)

 

练习

"""
练习:1 产生101-20的随机数,去除里面的重复项
     2 健盘输入一个元素,将此元素从不重复的集合中删除
"""
import  random
#产生10个 1-20 的随机数
list1 = []
for i in range(10):
    list1.append(random.randint(1,20))#1-20的随机数
print(list1)
#去除里面的重复项 将列表转换成集合
set1 = set(list1)
print(set1)
#输入一个元素:
element = input("请输入一个1-20的数字:")
result = set1.discard(element)
print(f"最后操作的结果为:{set1}")

 

"""
练习:1 产生101-20的随机数,去除里面的重复项
     2 健盘输入一个元素,将此元素从不重复的集合中删除
"""
import  random
#产生10个 1-20 的随机数
set1 =set ()
for i in range(10):
    #创建一个随机数
    rand = random.randint(1,20)
    set1.add(rand)
    print(set1)
#输入一个元素:
element = input("请输入一个1-20的数字:")#1
result = set1.discard(element)
print(f"最后操作的结果为:{set1}")

 

集合的其他操作

set1=set()
set2={2,3,4,5,6}
set3 ={2,3,4,5,6}
print(set2)
print(set3)
print(6 in set1)
print(6 in set2)
print(set2==set3) #值相同
print(set2 is set3) #但是内存不相同

 

set1=set()
set2={"2","3","4","5","6"}
set3 ={"2","3","4","5","6"}
print(set2)
print(set3)
print("6" in set1)
print("6" in set2)
print(set2==set3) #值相同
print(set2 is set3) #但是内存不相同
print(id(set2))
print(id(set3))

 

集合不支持 + *

集合-差集 .difference() -

set1 ={1,2,3,4}
set2={3,4,5,6}
#set5 = set1 ^ set2                     #{1, 2, 5, 6}
#set5 = (set1 | set2) - (set1 & set2)   #{1, 2, 5, 6}
set5 = set1.symmetric_difference(set2)  #{1, 2, 5, 6}
print(set5)

 

集合-交集 intersection() &

set1 ={1,2,3,4}
set2={3,4,5,6}
#set3 = set1 & set2
set3 = set1.intersection(set2)
print("set1和set2的交集是{}".format(set3))

 

集合-并集 .union() |

 

 

集合-对称差集 用两个集合的并集减去他们的交集 .symmetric_difference()

set1 ={1,2,3,4}
set2={3,4,5,6}
#set5 = set1 ^ set2                     #{1, 2, 5, 6}
#set5 = (set1 | set2) - (set1 & set2)   #{1, 2, 5, 6}
set5 = set1.symmetric_difference(set2)  #{1, 2, 5, 6}
print(set5)

 

可变和不可变类型

不可变类型,内存中的数据不允许被修改:

数字类型int  bool  float.complex.long(2.x)

字符串 str

元组tuple

可变类型,内存中的数据可以被修改

列表 list

字典dict

集合/frozenset()除外,frozenset()返回一个冻结的集合,冻结后集合不能再添加或删除任何元素

注意

可变类型的数据变化,是通过方法来实现的

如果给一个可变类型的变量,赋值了一个新的数据,引用会被修改

变量不再对之前的数据引用

变量改为对新赋值的数据引用

"""
可变和不可变类型
字典的键 必须是 数字、字符串、元组
数字、字符串、元组 是不可变类型  当变量的
id不发生改变的时候,它的值是不能变的!
列表、字典都是可变类型: 当
id不发生改变的时候,它的值是可以改变的
字典的键 必须使用不可变类型的变量
集合(
set)的元素,必须使用不可变类型的变量
"""
a = 5
b = a
print(b)
b = 777
#a等于多少?
print(a)

a = [1,2,3,4,5]
b =a
print(b)
b.append(777)
#a等于多少?
print(a)

 

数据类型转换

str()→int()    list()    set()    tuple()     

str()←int()    list()    set()    tuple()

list()→set()    tuple()  dict()   #转换成字典,元素要有固定的格式

dict()→list()    #只能保存字典的键

str_1 = "hello_Kitty !"
list1 = list(str_1)  #
将字符串的每个元素拆开,储存到 列表中
print(list1)

tuple1 = tuple(str_1) #
将字符串的每个元素拆开,储存到 元组中
print(tuple1)

set1 = set(tuple1)  #
将字符串的每个元素拆开,储存到 集合中,并且 会进行去重
print(set1)

print(list1)          # ['h', 'e', 'l', 'l', 'o', '_', 'K', 'i', 't', 't', 'y', ' ', '!']
str2  = str(list1)
print(str2)  # str2 = "['h', 'e', 'l', 'l', 'o', '_', 'K', 'i', 't', 't', 'y', ' ', '!']"

print(str2[:3]) #
切片

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值