Python基础之集合

一、定义:

  

二、基本操作:

    

三、运算:

    交集&, 并集|, 补集-, 对称补集^, 子集<   超集>

四、集合推导式:

    

五、固定集合 frozenset

    

六、基本代码:

  

# 1. 创建空集合
s01 = set()
# 2. 创建具有默认值的集合
s01 = {1,2,3,4}
# print(type(s01))
# 3. 其他容器 -->  集合
s02 = set("abcdace")
s02 = set([1,7,56,8,7,8])
#    集合 --> 其他容器  
l02 = list(s02)
t02 = tuple(s02)
# 4. 添加
s02.add("a")
s02.add("b")
s02.add("c")
print(s02)# {1, 7, 8, 'c', 'b', 56, 'a'}

# 5. 删除
# s02.remove(7)
# s02.remove(9) # 如果该元素不存在,则错误.

# if 9 in s02:
#     s02.remove(9)

s02.discard("a") # 如果该元素不存在,不会错误.
print(s02)

# 6. 获取所有元素
for item in s02:
    print(item)

# 7. 计算
s03 = {1,2,3}
s04 = {2,3,4}

# 交集
s05 = s03 & s04
print(s05)# {1, 2}

# 并集
s05 = s03 | s04
print(s05) # {1, 2, 3, 4}

# 补集
s05 = s03 ^ s04
print(s05) # {1, 4}

s05 = s03 - s04
print(s05) #  {1}

s05 = s04 - s03
print(s05) #  {4}

# 子集  超集
s06 = {1,2,3}
s07 = {1,2}
re = s07 <  s06  # True  说明s07 是  s06 的子集
re = s06 >  s07  # True  说明s06 是  s07 的超集
print(re)

# 相同  不同
s08 = {1,2,3}
s09 = {1,2,3}
re = s08 != s09  # True 说明s08 与  s09 相同
print(re)

 

  

"""
    固定集合
"""
f01 = frozenset([1,2,2,4])
print(type(f01))
print(f01)

七、实例:

  1、练习1:在控制台中随意录入多个字符串.按q退出,再显示所有不重复的字符串

    

set_target = set()
while True:
    str_input = input("请随意输入:")
    if str_input == "q":
        break
    set_target.add(str_input)

for item in set_target:
    print(item)

  2、练习2:经理:[曹操,刘备,孙权]  技术员:[曹操,刘备,张飞,关羽]

    1. 即是经理也是技术员的有谁?
    2. 是经理,但不是技术员的有谁?
    3. 是技术员,但不是经理的有谁?
    4. 张飞是经理吗?
    5. 身兼一职的都有谁?
    6. 经理和技术员总共有多少人?

    

list01 = ["曹操","刘备","孙权"]
list02 = ["曹操","刘备","张飞","关羽"]

set01 = frozenset(list01)
set02 = frozenset(list02)
#1. 即是经理也是技术员的有谁?
print(set01  &  set02)

#2. 是经理,但不是技术员的有谁?
print(set01  - set02)

#3. 是技术员,但不是经理的有谁?
print(set02  - set01)

#4. 张飞是经理吗?
print("张飞" in set01)

#5. 身兼一职的都有谁?
print(set02  ^ set01)

#6. 经理和技术员总共有多少人?
print(len(set02  | set01))

 

    

posted @ 2019-04-09 12:43  一如年少模样  阅读(336)  评论(0编辑  收藏  举报