北京中公优就业培训学校

试听课 + 活动课
填写信息优先获取试听课

位置:学校首页 > 学校动态>北京O基础学python推荐哪家机构要学多久

北京O基础学python推荐哪家机构要学多久

  北京O基础学python推荐哪家机构要学多久?在北京Python培训班有很多,但是根据教学质量和教学团队,小编推荐您可以到北京中公优就业了解一下!中公优就业——多年来深耕IT培训,为培养真正符合时代需求的IT人才,中公教育优就业以高瞻的视野,经多年布局,打造人才培训服务体系。以企业需求为导向,以行业未来为驱动,向企业和社会不断输送IT人才。

北京O基础学python推荐哪家机构要学多久

  copy模块

  在Python中,使用“=”运算符创建对象的副本。初学者可能会认为这种方式会创建一个新对象,但其实并非如此,仅创建一个共享原始对象引用的新变量。例如,先创建一个名为old_list的列表,再使用“=”运算符将对象引用传递给新列表new_list:

  >>>old_list=[[1,2,3],[4,5,6],[7,8,'a']]

  >>>new_list=old_list#创建对象的副本

  >>>new_list[2][2]=9#修改新列表

  >>>print(old_list)#打印旧列表,也改变了

  [[1,2,3],[4,5,6],[7,8,9]]

  >>>id(old_list)#id()内建函数,用于获取对象的内存地址

  4425086088

  >>>print(new_list)#打印新列表

  [[1,2,3],[4,5,6],[7,8,9]]

  >>>id(new_list)

  4425086088

  由此可见,变量old_list和new_list共享相同的ID,即4425086088;new_list修改了,old_list也随之改变了。

  在Python中,有两种创建副本的方法:copy模块中的深拷贝和浅拷贝。

  (1)浅拷贝

  浅拷贝创建一个新对象,该对象存储原始对象的引用。因此,浅拷贝不会创建嵌套对象的副本,而仅复制嵌套对象的引用。这意味着复制过程不会递归或创建嵌套对象本身的副本。下面是一个浅拷贝的示例:

  >>>import copy#导入copy模块

  >>>old_list=[[1,1,1],[2,2,2],[3,3,3]]

  >>>new_list=copy.copy(old_list)#浅拷贝

  >>>print(old_list)

  [[1,1,1],[2,2,2],[3,3,3]]

  >>>print(new_list)

  [[1,1,1],[2,2,2],[3,3,3]]

  在上述示例中,首先创建了一个嵌套列表old_list,然后使用copy()函数对old_list进行浅拷贝,这意味着它将创建具有相同内容的新的独立对象。new_list包含对存储在old_list中的原始嵌套对象的引用。为了确认new_list与old_list不同,尝试将新列表追加到old_list并进行检查:

  >>>old_list.append([4,4,4])#向old_list中追加一个新列表

  >>>print(old_list)#old_list中添加了新项

  [[1,1,1],[2,2,2],[3,3,3],[4,4,4]]

  >>>print(new_list)#new_list中没有添加新项

  [[1,1,1],[2,2,2],[3,3,3]]

  由此可知,将新列表(即[4,4,4])追加到old_list中,这个新的子列表未复制到new_list中。

  但是,当更改old_list中的任何嵌套对象时,更改将显示在new_list中:

  >>>old_list[1][1]='AA'

  >>>print(old_list)#old_list进行更改

  [[1,1,1],[2,'AA',2],[3,3,3],[4,4,4]]

  >>>print(new_list)#new_list也随之更改

  [[1,1,1],[2,'AA',2],[3,3,3]]

  对old_list进行了更改(即old_list[1][1]='AA'),old_list和new_list的索引[1][1]上的值均已更改,这是由于两个列表共享相同嵌套对象的引用。使用深拷贝可以解决这个“问题”。

  (2)深拷贝

  深层副本会创建一个新对象,然后递归地添加原始对象中存在的嵌套对象的副本。继续浅拷贝中的示例,这次将使用deepcopy()函数创建深拷贝。深拷贝创建原始对象及其所有嵌套对象的独立副本:

  >>>import copy

  >>>old_list=[[1,1,1],[2,2,2],[3,3,3]]

  >>>new_list=copy.deepcopy(old_list)#深拷贝

  >>>print(old_list)

  [[1,1,1],[2,2,2],[3,3,3]]

  >>>print(new_list)

  [[1,1,1],[2,2,2],[3,3,3]]

  使用deepcopy()函数创建外观相似的副本,这和浅拷贝一样。但是如果对原始对象old_list中的任何嵌套对象进行更改,并不会对副本new_list进行相应更改:

  >>>old_list[1][0]='BB'

  >>>print(old_list)

  [[1,1,1],['BB',2,2],[3,3,3]]

  >>>print(new_list)

  [[1,1,1],[2,2,2],[3,3,3]]

  为old_list分配新值时,只有old_list被更改了,这意味着old_list和new_list都是独立的。这是由于对old_list进行的是递归复制,所有嵌套对象都适用。


领取试听课
温馨提示:为不影响您的学业,来校区前请先电话或QQ咨询,方便我校安排相关的专业老师为您解答
版权所有:搜学搜课(www.soxsok.com) 技术支持:搜学搜课网