V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
sidegem
V2EX  ›  Python

有个 Python 问题想请教一下

  •  
  •   sidegem · 2019-04-07 18:54:58 +08:00 · 2185 次点击
    这是一个创建于 2058 天前的主题,其中的信息可能已经有所发展或是发生改变。
    def function(nums):
        for n in nums:
            if nums.count(n) != 1:
                nums.remove(n)
        return len(nums)
    
    if __name__ == '__main__':
        nums=[1,1,1,1]
        a=function(nums)
        for i in range(a):
            print(nums[i])
    

    使用 python3,问题是 function 函数中 for 循环为什么只循环了两次?

    9 条回复    2019-04-08 16:20:33 +08:00
    Kylin30
        1
    Kylin30  
       2019-04-07 19:10:53 +08:00
    应该是因为你在循环中修改了 nums
    sidegem
        2
    sidegem  
    OP
       2019-04-07 19:14:46 +08:00 via iPhone
    @Kylin30 嗯,我知道了修改了 nums,但不明白这里循环的终止条件是什么?
    frostming
        3
    frostming  
       2019-04-07 19:20:02 +08:00
    @sidegem 每次拿到下一个元素,直到没有元素可拿

    你删了两个元素,所以第一次拿的是 nums[0], 第二次是 nums[2], 然后没有下一个了
    Vegetable
        4
    Vegetable  
       2019-04-07 19:24:15 +08:00   ❤️ 1
    第一,for 循环可以认为是根据索引的.
    第二,remove 会移除第一个匹配项
    当 remove 前两个 1 之后,nums[2]就不存在了,所以 for 循环直接结束.
    sidegem
        5
    sidegem  
    OP
       2019-04-07 19:26:37 +08:00 via iPhone
    @Vegetable 嗯,明白了👍😂
    txydhr
        6
    txydhr  
       2019-04-07 19:48:31 +08:00 via iPad
    头像。。。。。
    sidegem
        7
    sidegem  
    OP
       2019-04-07 19:54:59 +08:00
    @txydhr 哈哈,撞头像了
    darkjoker
        8
    darkjoker  
       2019-04-08 11:50:51 +08:00
    哈哈
    sidegem
        9
    sidegem  
    OP
       2019-04-08 16:20:33 +08:00 via iPhone
    @darkjoker 嗯?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   905 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:10 · PVG 04:10 · LAX 12:10 · JFK 15:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.