zoukankan      html  css  js  c++  java
  • day5_集合

    集合也是一种数据类型,一个类似列表东西,它的特点是无序的,不重复的,也就是说集合中是没有重复的数据

    集合的作用:

    1、它可以把一个列表中重复的数据去掉,而不需要你再写判断---天生去重

    2、可以做关系测试,比如说有两个班,一个性能测试班,一个是接口测试班的,想找出来既学习了性能又学习了接口测试的同学,就可以用集合

    3、集合是无序的,没有下标,不能排序,想排序,整成list

    一、定义集合

    集合有两种不同类型:可变集合(set)和不可变集合(frozenset).
    对于可变集合,可以添加和删除元素;
    对于不可变集合只能读取元素,不能进行修改

    l = set()#定义一个空的集合,不能用{}
    list = [2,3,1,2,3,4]
    s_list = set(list)#这样就定义了一个集合
    set1 = set([1,3,4,5,6])#这种方式和上面的都是把list转换成一个集合
    set2={'hehe','hehe1','hehe3'}#这种方式是直接定义一个集合
    print(s_list)
    print(set1)
    print(set2)

    输出:

    {1, 2, 3, 4}
    {1, 3, 4, 5, 6}
    {'hehe3', 'hehe1', 'hehe'}

    二、集合操作

    list1 = {1, 2, 3, 4, 5, 6, 9}
    list2 = {2, 3, 4, 6, 1}
    list3 = {1, 2, 3}
    print(list1.intersection(list2))  # 取交集,也就是取list1和list2中都有的
    print(list1 & list2)# 取交集
    print(list1.union(list2))  # 取并集,也就是把list1和list2合并了,然后去除重复的
    print(list1 | list2)# 取并集
    print(list1.difference(list2))  #取差集 在list中存在,在list2中没有的
    print(list1 - list2)
    print(list3.issubset(list1))#判断list3是不是list1的子集
    print(list1.issuperset(list3))#判断list1是不是list3的父集
    print(list1.isdisjoint(list3))#判断list1和list3是否有交集,有交集返回False,没有交集返回True
    print(list1.symmetric_difference(list2))#对称差集,输出两个列表中都没有的值,也就是把两个集合中相同的去掉
    print(list1 ^ list2)
    list1.add(888)#添加元素
    list1.update([777,666,666])
    list1.remove(777)#删除元素,如果元素不存在会报错
    list1.pop()#删除一个随机的元素,并返回删除的元素
    list1.discard('dddd')#如果删除的元素存在,删除,不存在不做处理

     可以循环

    import string
    l1 = set(string.ascii_lowercase)
    for i in l1:
        print(i)

    1、添加元素

    语法格式如下:

    s.add( x )

    将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

    实例(Python 3.0+)

    >>>thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.add("Facebook")
    >>> print(thisset) {'Taobao', 'Facebook', 'Google', 'Runoob'}

    还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

    s.update( x )

    x 可以有多个,用逗号分开。

    实例(Python 3.0+)

    >>>thisset = set(("Google", "Runoob", "Taobao"))
    >>> thisset.update({1,3})
    >>> print(thisset) {1, 3, 'Google', 'Taobao', 'Runoob'}
    >>> thisset.update([1,4],[5,6])
    >>> print(thisset) {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}
    >>>
     

    s.add 和 s.update区别:

    add ,是把str作为一个整体放进set里面
    update,是拆散了放进set

    2、删除元素

    l.remove(777)#删除元素,如果元素不存在会报错
    l.pop()#删除一个随机的元素,并返回删除的元素
    l.discard('dddd')#如果删除的元素存在,删除,不存在不做处理
    l.clear()清空集合 l

    详细介绍:

    http://www.runoob.com/python3/python3-set.html

  • 相关阅读:
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    Java 集合系列02之 Collection架构
    Java 集合系列01之 总体框架
    [转载] 散列表(Hash Table) 从理论到实用(下)
    [转载] 散列表(Hash Table)从理论到实用(中)
    [转载] 散列表(Hash Table)从理论到实用(上)
    Android 之窗口小部件高级篇--App Widget 之 RemoteViews
    Android控件之GridView
    红黑树(一)之 原理和算法详细介绍
  • 原文地址:https://www.cnblogs.com/once-again/p/9625395.html
Copyright © 2011-2022 走看看