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
woshichuanqilz
V2EX  ›  Python

Python for 赋值的问题请教一下?

  •  
  •   woshichuanqilz · 2018-05-16 23:26:47 +08:00 · 4145 次点击
    这是一个创建于 2407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像这个表达式 为什么 c = [2,2] 而不是 [1,2]

    20180516232544

    16 条回复    2018-05-17 15:39:44 +08:00
    264768502
        1
    264768502  
       2018-05-16 23:34:36 +08:00 via Android
    list 传的是指针
    Northxw
        2
    Northxw  
       2018-05-16 23:37:21 +08:00
    才学疏浅,没看懂
    kindjeff
        3
    kindjeff  
       2018-05-16 23:43:09 +08:00   ❤️ 2
    前一个 y 和后一个 y 不是一个东西,写这个代码的建议拖出去打死
    Joshua999
        4
    Joshua999  
       2018-05-16 23:50:27 +08:00 via Android   ❤️ 1
    展开
    for x in y:
    for y in a:
    c.append(x)
    enenaaa
        5
    enenaaa  
       2018-05-16 23:51:29 +08:00   ❤️ 1
    因为还有段代码没贴出来啊
    liyiecho
        6
    liyiecho  
       2018-05-17 00:06:29 +08:00

    c = [x for x in y for y in a] 好奇是如何做到不报错的?
    lonccc
        7
    lonccc  
       2018-05-17 00:59:55 +08:00 via Android
    写反了
    xzpjerry731
        8
    xzpjerry731  
       2018-05-17 01:05:10 +08:00
    @liyiecho #6 估计楼主定义了一个 y 全局变量
    xiaol825
        9
    xiaol825  
       2018-05-17 01:27:38 +08:00
    如果完全第一次运行的话,第一个 y 那里是要出错的(未定义),你可以运行出来是因为 y 是本来已经有值了。你可以 print ( y )看一下
    MrGba2z
        10
    MrGba2z  
       2018-05-17 04:17:30 +08:00   ❤️ 2
    你要的是:
    c = [ y for x in a for y in x]
    xiaket
        11
    xiaket  
       2018-05-17 06:53:30 +08:00
    先把单展开的列表解析弄清楚再尝试多展开吧...
    zhusimaji
        12
    zhusimaji  
       2018-05-17 07:47:12 +08:00 via iPhone
    列表生成式写错了啦
    aaronzjw
        13
    aaronzjw  
       2018-05-17 08:06:40 +08:00 via iPhone
    会报错吧
    catsoul
        14
    catsoul  
       2018-05-17 09:11:29 +08:00
    你前面用过 y 这个变量,这里的后面一个 y in a 是没卵用的
    SayHeya
        15
    SayHeya  
       2018-05-17 12:26:03 +08:00 via Android
    执行顺序的问题
    xpresslink
        16
    xpresslink  
       2018-05-17 15:39:44 +08:00
    楼主注意一下,在列表解析(推导)式中的双层 for 循环和直接用循环语句的层次是一样的。
    c = []
    for y in a:
    □□□□for x in y:
    □□□□□□□□c.append(x)


    c = [ x for y in a for x in y]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3393 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 11:13 · PVG 19:13 · LAX 03:13 · JFK 06:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.