推荐学习书目
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 · Apr 7, 2019 · 2758 views
    This topic created in 2615 days ago, the information mentioned may be changed or developed.
    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 replies    2019-04-08 16:20:33 +08:00
    Kylin30
        1
    Kylin30  
       Apr 7, 2019
    应该是因为你在循环中修改了 nums
    sidegem
        2
    sidegem  
    OP
       Apr 7, 2019 via iPhone
    @Kylin30 嗯,我知道了修改了 nums,但不明白这里循环的终止条件是什么?
    frostming
        3
    frostming  
       Apr 7, 2019
    @sidegem 每次拿到下一个元素,直到没有元素可拿

    你删了两个元素,所以第一次拿的是 nums[0], 第二次是 nums[2], 然后没有下一个了
    Vegetable
        4
    Vegetable  
       Apr 7, 2019   ❤️ 1
    第一,for 循环可以认为是根据索引的.
    第二,remove 会移除第一个匹配项
    当 remove 前两个 1 之后,nums[2]就不存在了,所以 for 循环直接结束.
    sidegem
        5
    sidegem  
    OP
       Apr 7, 2019 via iPhone
    @Vegetable 嗯,明白了👍😂
    txydhr
        6
    txydhr  
       Apr 7, 2019 via iPad
    头像。。。。。
    sidegem
        7
    sidegem  
    OP
       Apr 7, 2019
    @txydhr 哈哈,撞头像了
    darkjoker
        8
    darkjoker  
       Apr 8, 2019
    哈哈
    sidegem
        9
    sidegem  
    OP
       Apr 8, 2019 via iPhone
    @darkjoker 嗯?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5325 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 08:35 · PVG 16:35 · LAX 01:35 · JFK 04:35
    ♥ Do have faith in what you're doing.