zoukankan      html  css  js  c++  java
  • Python :集合类型(set)

    set 是一个无序的元素集合,支持并、交、差及对称差等数学运算, 但由于 set 不记录元素位置,因此不支持索引、分片等序列的操作。

    一、初始化

    s0 = set()
    d0 = {}
    s1 = {0}
    s2 = {i % 2 for i in range(10)}
    s = set('hi')
    t = set(['h', 'e', 'l', 'l', 'o'])
    print(s0, s1, s2, s, t, type(d0))
    

    set() {0} {0, 1} {'i', 'h'} {'e', 'o', 'l', 'h'} <class 'dict'>
    
    • s0d0:使用 { } 只能创建空字典,创建空集必须用 set()
    • sssl:set 中的元素是 无序不重复 的,可以利用这个特点去除列表中的重复元素。

    二、运算操作

    print(s.intersection(t), s & t)		# 交集
    print(s.union(t), s | t) 		# 并集 
    print(s.difference(t), s - t)		# 差集 
    print(s.symmetric_difference(t), s ^ t)	# 对称差集 
    print(s1.issubset(s2), s1 <= s2)	# 子集
    print(s1.issuperset(s2), s1 >= s2)      # 包含
    

    {'h'} {'h'}
    {'l', 'h', 'i', 'o', 'e'} {'l', 'h', 'i', 'o', 'e'}
    {'i'} {'i'}
    {'i', 'l', 'o', 'e'} {'i', 'l', 'o', 'e'}
    True True
    False False
    
    • 非运算符的方法接受任何可迭代对象作为参数,如 s.update([0, 1])
    • 其他等价操作:s.update(t)s |= ts.intersection_update(t)s &= ts.difference_update(t)s -= ts.symmetric_difference_update(t)s ^= t 等。

    三、基本方法

    s = {0}
    print(s, len(s))   # 获取集合中的元素的总数
    s.add("x")         # 添加一个元素
    print(s)
    s.update([1,2,3])  # 添加多个元素
    print(s, "x" in s) # 成员资格测试
    s.remove("x")      # 去掉一个元素
    print(s, "x" not in s)  
    s.discard("x")     # 如果集合存在指定元素,则删除该元素
    c = s.copy()       # 复制集合     
    print(s, s.pop())  # 弹出集合中的一个不确定元素,如果原集合为空则引发 KeyError
    s.clear()          # 删除集合中的元素
    print(s, c)
    

    {0} 1
    {0, 'x'}
    {0, 'x', 1, 2, 3} True
    {0, 1, 2, 3} True
    {1, 2, 3} 0
    set() {0, 1, 2, 3}
    
  • 相关阅读:
    PAT Basic 1001
    PAT基础6-11
    PAT基础6-12
    PAT基础6-10
    修改正在进行遍历的列表
    使用管道和cronolog切割日志
    python logging模块
    python实现广度优先搜索和深度优先搜索
    多继承下的super()指向的不一定是直接父类
    python3 pandas DataFrame常见用法
  • 原文地址:https://www.cnblogs.com/Pandaman/p/set.html
Copyright © 2011-2022 走看看