py07.2_数据类型(集合)

一、集合类型

1.基本使用

(1)用途:关系运算、去重

(2)定义方式:{}内用逗号分开多个元素,每一个元素都必须是不可变(即可hash)类型

⭐⭐⭐强调:

a.集合内的元素都必须是不可变(即可hash)类型

b.集合内的元素是无序的,并不能通过索引来取值

c.集合内的元素不能重复(可理解为集合内无重复的元素)

s={1,3,"hello","sun"}     #s=set({1,3,"hello","sun"})
print(type(s))

2.单纯的用集合去重,需要注意的问题是⭐⭐⭐

(1)去重的目标所包含的值必须都是为不可变类型

(2)去重的结果会打乱原来的顺序

(如:列表若不想打乱顺序,可以使用for循环+append的方法来把值从列表中取出,并放入新的列表中)

names=["Namy","Brooke","Sauro","Luffy","Luffy","Brooke"]
s=set(names)
names=list(s)
print(names)

#如列表的去重
l=["sun","sun","cake","hello","sunday","hello"]
new_l=[]                                      #新建空列表
for item in list:                              
    if item not in new_l:
        new_l.append(item)

3.常用操作和内置方法

3.1优先掌握的操作

3.1.1 长度len

print(len(names))

3.1.2 成员运算in和not in

names=("Luffy","Brooke")
print("Luffy" in names)

⭐⭐⭐重点:

① 当没有集合的时候,取出两个列表中都有的或者不同元素的方法

names1=["Luffy","Namy","Brooke","Sauro","Boss","Boost"]
names2=["Luffy","Brooke","Boss","Sun","Moon"]
list=[]                      #定义一个空列表
for name in names1:    #循环取出names1中的元素    #如果需要不同元素则直接用not in
    if name in names2:     #判断names2中是否有同样的元素
        list.append(name)       #有的话就把该元素加入新列表当中
print(list)

② 有集合之后的操作方法:

 

names1={"Luffy","Namy","Brooke","Sauro","Boss","Boost"}
names2={"Luffy","Brooke","Boss","Sun","Moon"}

   | 并集   #前后顺序改变没有任何影响
print(names1|names2)
print(names1.union(names2))

   & 交集   #前后顺序改变没有任何影响
print(names1&names2)
print(names1.intersection(names2))

   -  差集    #前后位置对调,结果不同
print(names1-names2)
print(names2-names1)
print(names1.difference(names2))
print(names2.difference(names1))

   ^ 对称差集  #前后顺序改变不会改变结果
print(names1^names2)
print(names2^names1)
print(names1.symmetric_difference(names2))

  ==
print(names1==names2)   #False

  >,>=   父集
print(names1>names2)   #False  (names1包含names2)
print(names1.issuperset(names2))

   <,<=  子集(被包含的关系)
print(names2<names1)   #True

 

4.该类型总结

(1)存一个值或者多个值

        可以存多个值,但是值必须都是不可变类型

(2)有序或者无序

         集合是无序的

(3)可变或者不可变

        set集合是可变类型

s={1,2,3}
print(id(s))
s.add(4)
print(s)
print(id(s))

5.集合的去重

⭐⭐⭐单纯的用集合去重,需要注意的问题是

(1)去重的目标所包含的值必须都是不可变类型

(2)去重的结果会打乱原来的顺序

stu_info=[
{'name':'namy','age':18,'sex':'female'},
{'name':'luffy','age':18,'sex':'male'},
{'name':'luffy','age':18,'sex':'male'},
{'name':'brooke','age':999,'sex':'male'},
{'name':'brooke','age':999,'sex':'female'},
]

new_list=[]

for info in stu_info:

     if info not in new_list:

         new_info.append(info)

print(new_info)

 

 

posted @ 2018-06-01 20:15  Smart1san  阅读(188)  评论(0编辑  收藏  举报