联系客服1
联系客服2

python常见的模块

1
回复
1068
查看
打印 上一主题 下一主题
[复制链接]
  • TA的每日心情
    开心
    2019-3-12 10:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    7

    帖子

    36

    积分

    新手上路

    Rank: 1

    积分
    36
    楼主
    发表于 2019-3-12 10:40:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    copy模块
    这儿的复制有浅复制(copy)和深复制(deepcopy)
    区别:把包含几个对象的列表复制以后,如果源列表中的一个元素的属性改变则目标列表也跟随着变,如果想避免这个情况则用copy.deepcopy()函数。

    添加和删除源列表中的元素,无论是浅复制还是深复制都没有影响。

    >>> #下面这个例子我们创建了一个人的类,赋予了age、sex属性,初始一个人并复制一群人
    >>> class People:
        def __init__(self,age,sex):
            self.age = age
            self.sex = sex


    >>> p1 = People(6,boy)
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        p1 = People(6,boy)
    NameError: name 'boy' is not defined
    >>> p1 = People(6,'boy')
    >>> # 初始化完成后开始复制
    >>> import copy
    >>> p1 = People(6,'boy')
    >>> p2 = copy.copy(p1)
    >>> print(p2.age)
    6
    >>> print(p2.sex)
    boy
    >>> # 完成了单个复制,开始进行多个复制
    >>> p3 = People(8,'girl')
    >>> list1 = [p1,p2,p3]
    >>> list2 = copy.copy(list1)

    >>> print(list2[1].age)
    6
    # 用循环把里面的值打印出来,用while实现
    >>> long_list2 = len(list2)
    >>> i = 0
    >>> while i < long_list2:
        print(list2[i].age)
        print(list2[i].sex)
        i = i + 1


    6
    boy
    6
    boy
    8
    girl
    >>>
    #用for+range来实现,注意range里面的最后一个值是小于,并不包括这个值

    >>> for i in range(0,long_list2):
        print(list1[i].age)
        print(list1[i].sex)
        i = i + 1


    6
    boy
    6
    boy
    8
    girl
    >>>

    #直接在range里面调用函数来得到数组的长度也是可以的

    >>> for i in range(0,len(list2)):
        print(list1[i].age)
        print(list1[i].sex)
        i = i + 1


    6
    boy
    6
    boy
    8
    girl
    >>>

    #修改一个源列表中一个元素的属性,目标列表中的会跟着改变
    >>> list1[1].age = 7
    >>> for i in range(0,len(list2)):
        print(list2[i].age)
        print(list2[i].sex)
        i = i + 1


    6
    boy
    7
    boy
    8
    girl
    >>> #修改源列表中的一个属性,目标表中属性会跟着改变的,
    >>> #下面来在源列表中删除和添加一个元素,来看看目标表中会发生什么

    >>> del list1[1]
    >>> for i in range(0,len(list1)):
        print(list1[i].age)
        print(list1[i].sex)
        i = i + 1


    6
    boy
    8
    girl
    >>> for i in range(0,len(list2)):
        print(list2[i].age)
        print(list2[i].sex)
        i = i + 1


    6
    boy
    7
    boy
    8
    girl
    >>>
    # 源的删和添加是对目标无影响的
    >>> p4 = People(9,'girl')
    >>> list1.append(p4)
    >>> for i in range(0,len(list1)):
        print(list1[i].age)
        print(list1[i].sex)
        i = i + 1


    6
    boy
    8
    girl
    9
    girl
    >>> for i in range(0,len(list2)):
        print(list2[i].age)
        print(list2[i].sex)
        i = i + 1


    6
    boy
    7
    boy
    8
    girl


    收藏
    收藏0
    分享
    分享
    支持
    支持0
    反对
    反对0
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-3-12 10:49
  • 签到天数: 1 天

    [LV.1]初来乍到

    6

    主题

    7

    帖子

    36

    积分

    新手上路

    Rank: 1

    积分
    36
    沙发
     楼主| 发表于 2019-3-12 10:40:35 | 只看该作者
    3333333333
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    学习课程!一站搞定!
    学途无忧VIP会员群

    973849140

    周一至周日9:00-23:00

    反馈建议

    1227072433@qq.com 在线QQ咨询

    扫描二维码关注我们

    学途无忧!为学习谋坦途,为会员谋福利!|网站地图