Python论坛  - 讨论区

标题:[python-chinese] 问一个关于列表拷贝的问题

2006年11月29日 星期三 11:34

WhiteFox wyh817在gmail.com
星期三 十一月 29 11:34:16 HKT 2006

先看看我的运行结果
>>> x=[]
>>> k=[3,4,5]
>>> x.append(k)
>>> x
[[3, 4, 5]]
>>> k[0]=5
>>> x.append(k)
>>> x
[[5, 4, 5], [5, 4, 5]]

我需要的结果是x=[[3, 4, 5], [5, 4, 5]]

难道python中append操作不是重新开一块内存而是指向前面的内存么?要如何拷贝才能实现我要的功能呢?x.append(k[:])?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月29日 星期三 11:37

鄧 鵬 tei0925在cannac-she.com
星期三 十一月 29 11:37:40 HKT 2006

k[0]=5
是把 k=[3,4,5]的第一个item变成5了,所以 k=[5,4,5]
再append就出现您那个结果了。


----- Original Message ----- 
From: "WhiteFox" <wyh817 at gmail.com>
To: <python-chinese at lists.python.cn>
Sent: Wednesday, November 29, 2006 11:34 AM
Subject: [python-chinese] 问一个关于列表拷贝的问题


> 先看看我的运行结果>>> x=[]>>> k=[3,4,5]>>> x.append(k)>>> x[[3, 4, 5]]>>> k[0]=5>>> x.append(k)>>> x[[5, 4, 5], [5, 4, 5]]
> 我需要的结果是x=[[3, 4, 5], [5, 4, 5]]
> 难道python中append操作不是重新开一块内存而是指向前面的内存么?要如何拷贝才能实现我要的功能呢?x.append(k[:])?_______________________________________________python-chinesePost: send python-chinese at lists.python.cnSubscribe: send subscribe to python-chinese-request at lists.python.cnUnsubscribe: send unsubscribe to  python-chinese-request at lists.python.cnDetail Info: http://python.cn/mailman/listinfo/python-chinese

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月29日 星期三 11:38

刘鑫 march.liu在gmail.com
星期三 十一月 29 11:38:43 HKT 2006

1¡¢PythonÀﶼÊÇÒýÓöÔÏ󣬳ýÁËÃ÷È·µÄcopy on write¶ÔÏ󣬲»»áÓÐʲô¶«Î÷ÊÇ×Ô¶¯¸´ÖƵġ£¶¼ÊÇ´«ÒýÓá£
2¡¢PythonÓиöcopyÄ£¿é£¬²é²é°ïÖú£¬¿´¿´ËüÔõôÓ㺣©¡£

2006/11/29, WhiteFox <wyh817在gmail.com>:
>
> ÏÈ¿´¿´ÎÒµÄÔËÐнá¹û
> >>> x=[]
> >>> k=[3,4,5]
> >>> x.append(k)
> >>> x
> [[3, 4, 5]]
> >>> k[0]=5
> >>> x.append(k)
> >>> x
> [[5, 4, 5], [5, 4, 5]]
>
> ÎÒÐèÒªµÄ½á¹ûÊÇx=[[3, 4, 5], [5, 4, 5]]
>
> ÄѵÀpythonÖÐappend²Ù×÷²»ÊÇÖØпªÒ»¿éÄÚ´æ¶øÊÇÖ¸ÏòÇ°ÃæµÄÄÚ´æô£¿ÒªÈçºÎ¿½±´²ÅÄÜʵÏÖÎÒÒªµÄ¹¦ÄÜÄØ£¿x.append(k[:])£¿
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
»¶Ó­·ÃÎÊ£º
http://blog.csdn.net/ccat

ÁõöÎ
March.Liu
-------------- 下一部分 --------------
Ò»¸öHTML¸½¼þ±»ÒƳý...
URL: http://python.cn/pipermail/python-chinese/attachments/20061129/41b01343/attachment-0001.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月29日 星期三 12:19

大熊 bearsprite在gmail.com
星期三 十一月 29 12:19:17 HKT 2006

x=[]

k=[3,4,5]
x.append(k[:])

k[0]=5
x.append(k[:])

print x

>>[[3, 4, 5], [5, 4, 5]]

[:]操作会复制一个对象,而不是引用。不过如果你的列表中不是简单变量,而是嵌套了其它对象比如列表,这简单的方式就无效了,不过你可以使用标准的copy模块。

2006/11/29, WhiteFox <wyh817在gmail.com>:
>
> 先看看我的运行结果
> >>> x=[]
> >>> k=[3,4,5]
> >>> x.append(k)
> >>> x
> [[3, 4, 5]]
> >>> k[0]=5
> >>> x.append(k)
> >>> x
> [[5, 4, 5], [5, 4, 5]]
>
> 我需要的结果是x=[[3, 4, 5], [5, 4, 5]]
>
> 难道python中append操作不是重新开一块内存而是指向前面的内存么?要如何拷贝才能实现我要的功能呢?x.append(k[:])?
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese




-- 
茫茫人海,你是我的最爱
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20061129/64d4dddb/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年11月29日 星期三 13:14

ji.hongsen ji.hongsen在e-trust.com.cn
星期三 十一月 29 13:14:04 HKT 2006

大家好

有没有大连的pyer,搞django的?
有一个私活,网上代理记账方面的。
打算用django
DB可能是postgresql。
功能不麻烦,时间也不是太紧,不过要安全。
具体的还在洽谈中。有兴趣的可以联系一下
还需要一个人。^^


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号