2006年11月29日 星期三 11:34
先看看我的运行结果 >>> 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[:])?
2006年11月29日 星期三 11:37
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
2006年11月29日 星期三 11:38
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
2006年11月29日 星期三 12:19
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
2006年11月29日 星期三 13:14
大家好 有没有大连的pyer,搞django的? 有一个私活,网上代理记账方面的。 打算用django DB可能是postgresql。 功能不麻烦,时间也不是太紧,不过要安全。 具体的还在洽谈中。有兴趣的可以联系一下 还需要一个人。^^
Zeuux © 2025
京ICP备05028076号