美文网首页Python相关
Python中的set类型 以及 数组去重问题

Python中的set类型 以及 数组去重问题

作者: DeeJay_Y | 来源:发表于2018-06-22 22:06 被阅读25次

    Pyhton还有一种新的类型叫set, set中不可以有相同的元素:

    li = [1,2,3,1,2,3]
    
    tu = (1,2,3,1,2,3)
    
    se = {1,2,3,1,2,3}
    
    print(se) # {1,2,3}
    

    set的基本操作

    • add(element)
    name = {'Dee','Jay'}
    
    name.add('Dee')
    print(name) # {'Dee', 'Jay'}
    
    name.add('Yang')
    print(name) # {'Yang', 'Jay', 'Dee'}
    
    
    • clear()
    name = {'Dee','Jay'}
    
    name.clear()
    
    print(name) # set()
    
    • remove(element) discard(element)

    二者都是删除,remove不存在的元素会抛出异常,但是discard不会

    name = {'a','s'}
    
    
    # name.remove('as') # KeyError: 'as'
    
    name.discard('ass') 
    print(name) # {'a', 's'}
    
    
    • pop()
    name = {'a','s'}
    
    pop_elment = name.pop()
    
    print(pop_elment) # a
    print(name) # {'s'}
    

    注意这个pop()只是随机删除一个元素值。

    但是对于同一set,随机删除的这个元素是固定的

    • issubset(set) issuperset(set)
      用来测试两个集合是否包含,
    n1 = {1,2,3}
    n2 = {1,2,3,4}
    
    print( n1.issubset(n2) ) # True
    
    print( n2.issuperset(n2) ) # True
    
    • set1.union(set2)

    返回一个包含2个集合中所有元素的集合

    n1 = {1,2,3}
    n2 = {4,5,6}
    
    print( n1.union(n2) ) # {1, 2, 3, 4, 5, 6}
    
    • set1.intersection(set2)

    返回的是set1和set2的交集

    n1 = {1,2,3}
    
    n2 = {1,2,4}
    
    print( n1.intersection(n2) ) # {1,2}
    
    • s1.difference(s2)

    返回包含s1中有,但是s2没有的元素的集合。

    n1 = {1,2,3}
    
    n2 = {1,2,4}
    
    print( n1.difference(n2) ) # {3}
    
    • s1.symmetric_difference(s2)

    返回包含s1和s2中不相同的元素的集合。

    n1 = {1,2,3}
    
    n2 = {1,2,4}
    
    print( n1.symmetric_difference(n2) ) # {3,4}
    

    对于数组去重的思考

    • 第一种自然是使用set:
    li = [1,1,2,3,23,234,13]
    
    result = list(set(li))
    
    print(result) # [1, 2, 3, 234, 13, 23]
    
    

    转换为set再转换为list即可。

    • 第二种:
    li = [1,1,2,3,23,234,13]
    
    result = []
    
    for i in li:
        if i not in result:
            result.append(i)
    
    print(result) # [1, 2, 3, 23, 234, 13]
    
    

    只能说Python真的太简洁了

    相关文章

      网友评论

        本文标题:Python中的set类型 以及 数组去重问题

        本文链接:https://www.haomeiwen.com/subject/siacyftx.html