51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3669|回复: 3
打印 上一主题 下一主题

[求助] python 使用循环把列表a,移动到列表b,报错

[复制链接]
  • TA的每日心情
    无聊
    4 小时前
  • 签到天数: 531 天

    连续签到: 1 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2019-2-21 09:39:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点
    想把列表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的元素个数发生变化不能进行循环吗?求解

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2019-2-25 12:21:19 | 只看该作者
    是的,在代码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.

    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    5 小时前
  • 签到天数: 2820 天

    连续签到: 2 天

    [LV.Master]测试大本营

    1#
    发表于 2019-2-22 17:30:38 | 只看该作者
    最好的办法就是打印日志
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-26 13:20 , Processed in 0.071689 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表