加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 教程文章 > Python开发

python数组复制拷贝的方法

时间:2014-07-23 16:31:10  来源:  作者:

python数组复制拷贝的方法

在python中,可以直接通过等号赋值,其实它只是引用地址的传递。

例如:

代码示例:
a = [1,2,3,4,5]
b=a

当a的值改变时,b的值也会随之改变。

如果希望b和a没有关系,可以这样:

代码示例:
a = [1,2,3,4,5]
b=a[:]

这样a和b就是两个完全独立的数组。

附,python]关于list的复制
比如list,像:

复制代码 代码示例:
a=range(10)
b=a

其实b和a都是引用了同一个对象,即只要不给b重新一个list,那么,对b进行的操作,也会反应到a上面。
例如:
b.remove(7)
那么,a中的7也会被不见了。

然后,就是如何对值进行复制。
就是用上 [:] 。
那么:

代码示例:
a=range(10)
b=a[:]
然后进行:
b.remove(7)
而结果是,a和b的值已经不一样了。

所以,python的tutorial中有以下的例子:

代码示例:
>>> for x in a[:]: # make a slice copy of the entire list
... if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrate', 'cat', 'window', 'defenestrate']
如果没有a[:],那么,由于a一直在变化,以致进入死循环。
因此,要根据情况,对要不要使用复制list进行判断。

例如:

代码示例:
>>> x=[1 for i in range(10)]
>>> for xx in x:
             if(xx==1):
                  x.remove(xx)

>>> x
[1, 1, 1, 1, 1]
>>>

而如果使用了[:]则会不同,因为它对复制的列表进行遍历,而不是对原列表进行遍历。
例如:

代码示例:
>>> x=[1 for i in range(10)]
>>> for xx in x[:]:
                 if(xx==1):x.remove(xx)

>>> x
[]
>>>

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
在CentOS下搭建Android 开发环境
在CentOS下搭建Androi
轻松搭建属于自己的Ubuntu发行版
轻松搭建属于自己的Ub
利用SUSE Studio 打造自己的个性化Linux发行版
利用SUSE Studio 打造
那些采用PHP技术的IT大企业
那些采用PHP技术的IT大
相关文章
    无相关信息
栏目更新
栏目热门