zoukankan      html  css  js  c++  java
  • Python学习记录——深浅拷贝、集合

    一.深浅拷贝

    1.使用函数:

    列表名.copy()  #eg:s2=s1.copy

    2.深拷贝:

    深拷贝新旧内容储存空间互相独立

    eg:s1=[1,2,3]  s2=[1,2,3]

    3.浅拷贝:

    浅拷贝新旧内容共享储存空间,指针指向同一内容。对单个元素的修改仅体现在该列表上,对列表元素的修改体现在新旧列表上。

    eg:a=[[1,2],3,4]  b=a.copy() (或者写b=a[:])

    修改:b[0][0]=8

    此时a、b都会改变,因为直接修改了内存中的内容和指针

    二.集合

    1.集合是一个无序的,不重复的数据组合

    2.主要作用:

    (1)去重,把一个列表变成集合,就自动去重了  #eg:s=list(set(s))

    (2)关系测试,测试两组数据之前的交集、差集、并集等关系

    3.概念:

    (1)集合元素(set elements):组成集合的成员(不可重复)

    (2)集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键(如果列表中又包含列表,则不可用set转为集合,如s1=[[1,2],3])

    4.集合分类:

    (1)可变集合(set):可添加和删除元素,非可哈希的,不能用作字典的键,也不能做其他集合的元素

    (2)不可变集合(frozenset):与上面恰恰相反

    5.集合的相关操作:

    (1)创建集合:由于集合没有自己的语法格式,只能通过集合的工厂方法set()和frozenset()创建

      若s=set('zhou'),即字符串形式,则输出s为{'z','h','o','u'};若s=set['zhou','boy'],即列表形式,则输出s为{'zhou','boy'}

    (2)访问集合:由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素

    (3)更新集合:

      可使用以下内建方法来更新:

      s.add()  #注意,add里的内容作为一个元素添加进去,如果是字符串,不会拆分

      s.update()  #注意,update里的内容作为一个序列添加进去,如果是字符串,会拆分

      s.remove()

      注意:只有可变集合才能更新

    (4)删除集合:del

    6.集合类型操作符

    (1)in ,not in

    (2)集合等价与不等价(==, !=)

    (3)子集(用<表示包含关系,不包含自身)、超集(A是B的子集,则B是A的超集)

    (4)并集(|):等价方法是union(),与集合or操作等价,a.union(b)表示a、b中所有元素的集合(不重复)

    (5)交集(&):等价方法是intersection(),与集合and操作等价,a.intersection(b)表示a、b共有的部分

    (6)差集(-):等价方法是difference(),a.difference(b)表示a中去掉a、b共有的部分

    (7)对称差集(^):等价方法是symmetric_difference(),表示a、b中非共有部分

  • 相关阅读:
    图床_OpenStack-镜像服务
    图床_OpenStack-认证服务
    图床_OpenStack-基础环境
    #linux包之tcpdump之tcpdump命令
    利用OpenCms9提供的模块创建新站点
    Cocos2d-x3.0下实现循环列表
    Modbus读写模拟量寄存器具体解释
    C++ 实践总结
    spring Quartz基于配置文件和注解的实现
    EEPLAT学习
  • 原文地址:https://www.cnblogs.com/zhoujianlin/p/8468018.html
Copyright © 2011-2022 走看看