python复制list
‘壹’ python字典浅复制问题
这个情况跟你设计有关系的,dict1['1']应该是一个list,然后dict2['1']是另外一个list。如果前面的list跟后面的list不是一个,或者没有的关系的话,修改dict1['1']不会影响dict2['1']。
如果dict1['1'][0]是一个list,然后dict2['1'][0]也指向这个list的话,修改dict1['1'][0],dict2['1'][0]也会跟着变化。
‘贰’ python 3 如何提取list中值
$ pythonPython 2.7.3 (default, Mar 14 2014, 11:57:14) [GCC 4.7.2] on linux2Type "help", "right", "credits" or "license" for more information.>>> lst=[... '11', '1', '100', '10\n',... '11', '2', '200', '20\n',... '11', '3', '300', '30\n',... '11', '4', '400', '40\n']>>> # 第一步:将数据组织成方便使用的结构>>> data = [... map(int, lst[i*4:(i+1)*4])... for i in xrange(len(lst)/4)... ]>>> data[[11, 1, 100, 10], [11, 2, 200, 20], [11, 3, 300, 30], [11, 4, 400, 40]]>>> # 第二步就直接简单地计算好了>>> 1. * sum([x[2] for x in data]) / len(data)250.0>>> 1. * sum([x[3] for x in data]) / len(data)25.0>>>
或者在要处理很多月份,并有按月计算的需求时:按月-数据的字典结构组织数据并设一个计算平均值的函数就更简单了
>>> lst=[... '11', '1', '100', '10\n',... '11', '2', '200', '20\n',... '11', '3', '300', '30\n',... '11', '4', '400', '40\n',... '12', '1', '120', '12\n',... '12', '2', '230', '23\n',... '12', '3', '340', '34\n',... '12', '4', '450', '45\n',... ]>>> >>> data = {}>>> for x in [... map(int, lst[i*4:(i+1)*4])... for i in xrange(len(lst)/4)... ]:... data.setdefault(x[0], []).append(x[1:])... >>> def avg(serial):... return 1. * sum(serial) / len(serial)... >>> avg([x[1] for x in data[12]]) # 计算12月的第二个数据的平均值285.0>>>
‘叁’ python3对于列表的 [:]和list. 有什么区别
我们日常所说的复制(自己在电脑硬盘上的复制)就是深复制(deep),即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。
而浅复制()并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签指向的数据块就会发生变化,另一个标签也会随之改变。这就和我们寻常意义上的复制有所不同了。
‘肆’ Python的列表有没有浅复制跟深复制的概念
有的。比如:
首先这里导入模块,并生成三个列表
发现list2和list3有不同,其中list2就是浅复制,list3就是深复制
浅复制就是指当对象的字段值被复制时,字段引用的对象不会被复制,也就是引用的对象和原数据还是同一个,并没有产生一个新的对象
深复制指对对象中字段引用的对象也进行复制的一种方式,会产生一个新的值相同的不同对象
‘伍’ python怎么把list依次赋值
import List2=.deep(List1)这样赋值,List2初始值和List1一样,因为是深度复制List1中的元素,所有深层元素都引用的是不同的对象,List1的任何改变不会影响List2
‘陆’ python,将一个列表的数据复制到另一个列表中。
#coding=utf-8
import
list=[1,2,3]
#普通赋值(引用)
list_a=list
#切片赋值(引用)
list_b=list[:]
#浅拷贝
list_c=list.()
list_d=.(list)#需要导入包
#深拷贝
list_e=.deep(list)#需要导入包
‘柒’ python函数中传入list为啥会这样,这破问题卡了一整天
代码及运行结果如图:
从你的问题来看是一个新手,建议直接放弃2.x版本学习3.x版本。对现在的你来说用到的2与3版本之间的差异可能也就是print(如图中所示与你代码的差异),影响很小。
代码解释:
你的代码中用A,B = inputlist,inputlist进行赋值,实际A与B都是指向了同一个内存对象,所以对其中任意一个做出修改,即修改了内存中的这个对象,造成A与B同时修改。解决方法,引入模块中的deep()函数,保证A与B指向长的一样但在内存中是两个对象,这样对其中一个修改时完全不影响到另一个。
‘捌’ python 列表操作的一个问题
一、创建一个列表
只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
复制代码代码如下:
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
二、访问列表中的值
使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符,如下所示:
复制代码代码如下:
#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]
以上实例输出结果:
复制代码代码如下:
list1[0]: physics
list2[1:5]: [2, 3, 4, 5]
三、更新列表
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
复制代码代码如下:
#!/usr/bin/python
list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2];
list[2] = 2001;
print "New value available at index 2 : "