一个比较奇怪的问题。

一个比较奇怪的问题。



[Copy to clipboard] [ - ]
CODE:
...
temp = urls
for cate in temp:
    if cate.find('hello') > 0:
        urls.remove(cate)
print len(urls)
print len(temp)
...

urls是一个List变量,里面存放了一些字符串,这个小程序跑完后,竟然发现temp也变了,但并没有直接操作temp阿.奇诡
from copy import copy
temp = copy(urls)
for cate in temp:
    if cate.find('hello') > -1:
        urls.remove(cate)
print len(urls)
print len(temp)
print id(urls)
print id(temp)
print id(urls) == id(temp)   

两个对象是同一个ID,也就是同一个对象; 改变urls也就会改变temp;
2楼的方法可以达到你的目的.
其实pythonic的方法是
temp=[ k for k in url if k.find('hello')==-1 ]
pythonic!!
恩,学习了,谢谢楼上诸位的帮助。




QUOTE:
原帖由 blamos 于 2008-12-20 12:02 发表

...
temp = urls
for cate in temp:
    if cate.find('hello') > 0:
        urls.remove(cate)
print len(urls)
print len(temp)
...

urls是一个List变量,里面存放了一些字符串,这个小程序跑完 ...

for cate in urls[:]:
    if cate.find('hello') > 0:
        urls.remove(cate)