python中对列表浅复制深复制另类的理解方式

‘‘‘创建者:徐洋创建时间:2017年6月13日22:25:23代码功能:详细分析列表的浅copy和深度copy‘‘‘#导入copy模块import copylist1 = [1,2,3,["a","b","c"]]#对表1进行浅复制list2 = copy.deepcopy(list1)#copy.copy#查询表1中各个元素的内存地址address0 = id(list1[0])address1 = id(list1[1])address2 = id(list1[2])address3 = id(list1[3])address30 = id(list1[3][0])address31 = id(list1[3][1])address32 = id(list1[3][2])#查询表2中各个元素的内存地址address_0 = id(list2[0])address_1 = id(list2[1])address_2 = id(list2[2])address_3 = id(list2[3])address_30 = id(list2[3][0])address_31 = id(list2[3][1])address_32 = id(list2[3][2])# 打印出列表1的内存地址和列表2的内存地址print("---------第一次比较---------")print("列表1:",address0,address1,address2,address3,address30,address31,address32)print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)# 修改列表1中某个值list1[1]=-1#查询表1中各个元素的内存地址address0 = id(list1[0])address1 = id(list1[1])address2 = id(list1[2])address3 = id(list1[3])address30 = id(list1[3][0])address31 = id(list1[3][1])address32 = id(list1[3][2])#查询表2中各个元素的内存地址address_0 = id(list2[0])address_1 = id(list2[1])address_2 = id(list2[2])address_3 = id(list2[3])address_30 = id(list2[3][0])address_31 = id(list2[3][1])address_32 = id(list2[3][2])# 打印此时列表1的内存地址和列表2的内存地址print("---------第二次比较---------")print("列表1:",address0,address1,address2,address3,address30,address31,address32)print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)print(list1,list2)# 修改列表1中第三个元素中的值list1[3][1] = 6#查询表1中各个元素的内存地址address0 = id(list1[0])address1 = id(list1[1])address2 = id(list1[2])address3 = id(list1[3])address30 = id(list1[3][0])address31 = id(list1[3][1])address32 = id(list1[3][2])#查询表2中各个元素的内存地址address_0 = id(list2[0])address_1 = id(list2[1])address_2 = id(list2[2])address_3 = id(list2[3])address_30 = id(list2[3][0])address_31 = id(list2[3][1])address_32 = id(list2[3][2])# 打印此时列表1的内存地址和列表2的内存地址print("---------第三次比较---------")print("列表1:",address0,address1,address2,address3,address30,address31,address32)print("列表2:",address_0,address_1,address_2,address_3,address_30,address_31,address_32)# 原因分析:看图print(list1,list2)
时间: 2024-10-07 04:14:11

python中对列表浅复制深复制另类的理解方式的相关文章

Python中的列表,元组,字符串之间的相互转化

Python中的列表元组和字符串之间的相互转化需要利用,tuple(),list(),str(). 示例如下: >>> the_string = "hello I'am xiaoli!" >>> #字符串转化为元组 >>> the_tuple = tuple(the_string) >>> the_tuple ('h', 'e', 'l', 'l', 'o', ' ', 'I', "'", 'a

Python 中使用列表解析时候的区别

使用[] + for语句是解析列表 而使用() + for语句是产生生成器 实例代码如下: alist = [1, 2, 3, 4, 5] another_list = [i for i in alist] print another_list a_generator = (i for i in alist) print a_generator for i in a_generator: print i Python 中使用列表解析时候的区别

Python中的列表解析和生成器表达式

Python中的列表解析和生成器表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.列表解析案例 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/

python中的列表及numpy数组排序

一.列表排序  # python中对列表排序有sort.sorted两种方法,其中sort是列表内置方法,其帮助文档如下:In [1]: help(sorted) Help on built-in function sorted in module builtins: sorted(iterable, /, *, key=None, reverse=False) Return a new list containing all items from the iterable in ascendi

关于Python中的列表理解及用法

在Python中,列表理解通常用于编写单行语句,这些语句通过可迭代对象进行迭代以创建新的列表或字典.本文首先介绍for循环如何在Python中工作,然后解释如何在Python中使用列表理解. Python中的for循环 Python中的for循环语句按顺序遍历任何对象.列表.字符串等的成员.与其他编程语言相比,它的语法更加简洁,不需要手工定义迭代步骤,也不需要开始迭代.尽管有几种方法可以使它的行为与其他编程语言相同(本文将不详细讨论).还可以使用continue.break.pass等语句控制f

数组浅复制&深复制

// 浅复制 var nums = [];//创建数组,推荐使用[]操作符,大多数专家认为其有更高的效率 for ( var i = 0; i < 100; ++i) { nums[i] = i + 1; } var samenums = nums; nums[0] = 400; alert(samenums[0]); // 显示 400 //深复制 function copy(arr1, arr2) { for ( var i = 0; i < arr1.length; ++i) { arr

python中的列表3

一.列表的一些常用操作符 1.比较操作符 当列表中有多个元素时,列表间只比较第0个元素. >>> list1 = [1,2] >>> list2 = [2,1] >>> list1 > list2 False 2.逻辑操作符 >>> list1 = [1,2] >>> list2 = [2,1] >>> list3 = [1,2] >>> (list1 < list2)

Python自动化开发从浅入深-语言基础(常用模块)

模块就是将一些相似功能的代码集中到一起,通过定义形象的模块名称,以便用户查找和使用. 通常模块分为三种:自定义模块,内置标准模块和开源模块. 自定义模块 和开源模块的使用参考 http://www.cnblogs.com/wupeiqi/articles/4963027.html  python中的一些常用模块包括以下几个: 一.time 和 datetime模块: 用于处理时间和日期的. import time import datetime print(time.clock()) #返回处理

Python中的列表(6)

列表切片 如何拿到列表中的部分元素,Python 引入了 “切片” 的概念. 上代码: words = ['a','b','c','d'] print(words[0:3]) console: 冒号(:)左边为想“切”的开始索引,右边则是结束索引,不含右索引处的值,与range() 函数 一样. 省略第一个索引: words = ['a','b','c','d'] print(words[:3]) console: 如果,省略冒号左边的索引,则默认为列表的开头处切. 省略第二个索引: words