zoukankan      html  css  js  c++  java
  • 四. python集合

    一. 集合

    set() 类似字典(dict) 是一组key 集合 不存储
    本质: 无序 和 无重复的元素的集合

    集合:无序,即无序存索引相关信息

    set是没有索引的

    创建:
    创建set 需要 一个列表(list)或者元组(tuple)或者字典(dict)作为输入的集合

    1. 重复元素可以在set中自动过滤

    #  重复元素可以在set中自动过滤
    s2=set([1,2,3,4,1,2,3])
    print(s2)  #{1, 2, 3, 4}
    
    
    s3=set((10,22,33,4,10,22,33))
    print(s3)  #{33, 10, 4, 22}

     2.set()  类似字典(dict)   是一组key 集合  不存储

    # set()  类似字典(dict)   是一组key 集合  不存储
    s4=set({"name":"小明","age":25,"study":"python"})
    print(s4)  #{'study', 'age', 'name'}

     3.添加 add()

    # set添加 add
    s5=set([1,2,3])
    s5.add(1000)
    print(s5)  #{1000, 1, 2, 3}
    s5.add(3)  #可以添加重复的元素  但是不会有效果
    # s5.add([7,8,9])    # set 的元素不能是列表  因为列表是可变的  
     
    s5.add((7,9,6))
    print(s5)   # {1000, 1, 2, 3, (7, 9, 6)}  因为元组不可变所有能添加进去
    
    s5.add({"name":"张三"})  
    print(s5)  #set的元素不能是字典  因为字典是可变的

    4.更新update() 

    # 添加更新update
    # update  插入添加整个 list tuple 字符串打乱了
    s6=set([1,2,3])
    s6.update([6,7,9])
    print(s6)  #{1, 2, 3, 6, 7, 9}  字符串打碎查入了
    
    
    s7=set([1,2,3])
    s7.update((45,46,47))
    print(s7)    #1, 2, 3, 45, 46, 47}
    
    s8=set([1,2,3])
    s8.update(("name"))
    print(s8)   #{1, 2, 3, 'a', 'e', 'n', 'm'}

    5.删除remove()

    s9=set([1,2,3])
    s9.remove(2)
    print(s9)  #{1, 3}

    6.遍历

    # 循环遍历
    s10=set([1,2,3,4,5,6])
    for i  in s10:
     print(i)   #1 2 3 4 5 6 
    
    
    
    s11=set("name")
    for i  in s11:
     print(i)   #n a m e

    7.set里面有交集和并集

    # 交集  &
    str12=set([1,2,3,4,5])
    str13=set([11,2,3,44,55])
    
    a1=str12&str13
    print(a1) #{2, 3}
    print(type(a1)) #<class 'set'>
    # 并集  |
    str12=set([1,2,3,4,5])
    str13=set([10,2,3,6])
    a2=str12|str13
    print(a2)   #{1, 2, 3, 4, 5, 6, 10}
    print(type(a2)) #<class 'set'>
    # 集合
    # python 集合(set)  
     
    
    
    
    
    # 01   isdisjoint #判断是否是相交集,返回bool值
    s1={1,2}
    
    s2={3,9,5}
    
    aa=s1.isdisjoint(s2)
    
    print(aa)    True
    
    
    
    
    
    # 0.2 issubset              #判断是否是其子集
    s2={1,2}
    
    s3={1,2,5}
    
    bb=s2.issubset(s3)     # s2是s3 的子集
    
    print(bb)  # True
    
    
    
    
    集合:集合是具有某种特定性质的事物的总体;
    
    引入时间:python 2.3 以后版本, 位于Stes模块;
    
    set(tuple)                #创建序列
    
    集合的特点:交集和并集
    
    a=set(range(10))
    b=set(range(20))
    c=a|b
    print c
    set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
    
    d=a&b
    print d
    set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    函数:
    
    1.issubset              #判断是否是其子集
    
    a.issubset(b)           # 返回bool值
    
    2.add                   #集合中增加元素
    
    a=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    a.add(11)
    print a
    set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11])
    
    3.clear                  #删除集合中所有元素
    
    4.copy                   #复制集合中的元素
    
    5.difference             #判断集合之间的差异返回新的集合
    
    a=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    b=set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
    
    b.difference(a)           #判断b与a之间的差异
    set([10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
    
    6.remove                  #删除序列中指定的元素
    
    7.isdisjoint              #判断是否是相交集,返回bool值
    
    8.issuperset              #判断是否是超级,返回bool值
    
    b.issuperset(a)           #判断b是否是a的超集
    
    超集定义:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集。 S1是S2的超集,则S2是S1的真子集,反之亦然
    
    9.union                   #连接两个集合,形成新的集合
    
    a.union(d)
    
    10.update                 #更新集合
    
    a.update(b)               #将b集合更新到a集合中
    
    11.pop                    #删除集合中的任意一个元素
    
    a.pop()  
    
    12.discard                #删除集合中存在的指定元素
    
    a.discard(2)              #元素2如果存在集合a中,则删除;
  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/Sup-to/p/10840960.html
Copyright © 2011-2022 走看看