51Testing软件测试论坛

标题: python 使用循环把列表a,移动到列表b,报错 [打印本页]

作者: 测试积点老人    时间: 2019-2-21 09:39
标题: python 使用循环把列表a,移动到列表b,报错
想把列表a,移动到列表b,以下是使用for循环,和while循环的代码写法。
代码一:
  1. a=['hello','green','shop','read']
  2. b=[]
  3. for i in range(0,len(a)):
  4. c=a.pop()
  5. b.append(c)
  6. prnit (a,b)
复制代码


代码二:
  1. a=['hello','green','shop','read']
  2. b=[]
  3. for i in a:
  4. c=a.pop()
  5. b.append(c)
  6. prnit (a,b)
复制代码


代码三:
  1. a=['hello','green','shop','read']
  2. b=[]
  3. while a:
  4. c=a.pop()
  5. b.append(c)
  6. print (a,b)
复制代码
现在的问题是,在运行代码二时,为什么列表a,只移动了后两项到列表b,for循环为什么只循环了两次。难道是因为删除了列表a的元素,导致列表a的元素个数发生变化不能进行循环吗?求解

作者: jingzizx    时间: 2019-2-22 17:30
最好的办法就是打印日志
作者: 丛影    时间: 2019-2-25 12:21
是的,在代码2中,循环中对a列表进行了更改
第一次循环
c: read
a: ['hello', 'green', 'shop']
b: ['read', 'shop', 'green', 'hello', 'read']
第二次循环
c: shop
a: ['hello', 'green']
b: ['read', 'shop', 'green', 'hello', 'read', 'shop']
第二次循环结束后,理论上i =a[2],但是这时候a 是没有a[2]的,a的长度为2.






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2