推荐学习书目
› 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
lts9165
V2EX  ›  Python

请教一个python赋值语句的问题

  •  
  •   lts9165 · Oct 8, 2013 · 4183 views
    This topic created in 4775 days ago, the information mentioned may be changed or developed.
    l = [1, 2, 3]
    a = [4]
    l[:] = a
    print l

    如上语句中, l[:] = a这句,算是什么类型的赋值呢?
    l[:]是个列表,如果这算是列表解包赋值,那右边的a又和l[:]的长度不一致
    求好心人指点迷津~~
    8 replies  •  1970-01-01 08:00:00 +08:00
    hanai
    hanai
    Oct 8, 2013❤️1
    1
    hanai
    hanai
    Oct 8, 2013
    2
    呃,错了。
    lts9165
    lts9165
    OP
    Oct 8, 2013
    3
    @hanai 恩,好像确实有问题,l[:]和l确实是不同的对象,可是为什么能够直接给l[:]赋值呢
    lts9165
    lts9165
    OP
    Oct 8, 2013
    4
    @hanai 我还试了[l[0],l[1],l[2]]=a 这样的赋值,就说a只有一个值,解不了
    vmebeh
    vmebeh
    Oct 8, 2013
    5
    >>> i[:]==i
    True
    farseerfc
    farseerfc
    Oct 8, 2013❤️3
    6
    區別用以下例子可以說清楚:
    >>> l = [1,2,3]
    >>> r = l
    >>> a = [4]
    >>> l
    [1, 2, 3]
    >>> r
    [1, 2, 3]
    >>> a
    [4]
    >>> l[:]=a
    >>> l
    [4]
    >>> r
    [4]
    >>> l = [1,2,3]
    >>> r = l
    >>> a = [4]
    >>> l = a
    >>> l
    [4]
    >>> r
    [1, 2, 3]
    >>> l = [1,2,3]
    >>> l[1:3] = a
    >>> l
    [1, 4]

    針對區段的賦值是可以替換整個區段的。
    lts9165
    lts9165
    OP
    Oct 8, 2013 via Android
    7
    @farseerfc 哦!明白了!多谢~
    roricon
    roricon
    Oct 9, 2013
    8
    我擦还能这么写,又学到了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5216 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 06:21 · PVG 14:21 · LAX 22:21 · JFK 01:21
    ♥ Do have faith in what you're doing.