a=[1,2,3]
for x in a:
if x>2:
a.insert(0,-1)
为什么 会陷入死循环
另外,如果把代码改成
a=[1,2,3]
for x in a[:]:
if x>2:
a.insert(0,-1)
就不会出现死循环了。
这个a按理说与a[:]应该一样的
a 不等于 a[:]
object slice 返回一个单独的值,用代码说明一下:
li = [1,2,3]
sli = li[:]
li is sli #this line will print False.(也就是说li 和 sli不是同一个对象)
也就第一次你用原生对象迭代,第二次你用slice的返回值迭代。
所以第一次,你Infinite Loop。第二次却不会(你没有操作slice后的返回值)。
yes,原来a[:]只是a的一个拷贝,不会随着a的改变而改变。你说的很对
你想要实现什么功能,你上面用for对a进行遍历,但在最后又改变了a的值,这样a会无限地变长,永远都遍历不完
另外,你的程序有问题,应该是 a.inseert吧,不是a,insert
我没有想实现什么功能,只不过学学而已,那个逗号打错了 是点号。
另外,如果把代码改成
a=[1,2,3]
for x in a[:]:
if x>2:
a.insert(0,-1)
就不会出现死循环了。
这个a按理说与a[:]应该一样的