zoukankan      html  css  js  c++  java
  • Python2和Python3中列表推导式的不同

    Python2和Python3中列表推导式的不同

    python2

    >>> x = 'my girl'
    >>> lst = [x for x in 'hello']
    >>> x
    'o'
    
    

    可以看到x的值被覆盖了

    来看python3

    python3

    >>> x = 'my girl'
    >>> lst = [x for x in 'hello']
    >>> x
    'my girl'
    

    x的值没有被覆盖,这是因为python3为列表推导式创建了局部作用域,这个局部作用域内定义的变量不会对全局作用域的变量造成干扰


    补充: for 循环与列表推导式的情况不同,无论是python2还是python3都会覆盖

    python2

    >>> i=10               
    >>> for i in range(5): 
    ...     print(i)       
    ...                    
    0                      
    1                      
    2                      
    3                      
    4                      
    >>> i                  
    4                      
    
    

    python3
    >>> i=10               
    >>> for i in range(5): 
    ...     print(i)       
    ...                    
    0                      
    1                      
    2                      
    3                      
    4                      
    >>> i                  
    4                      
    
    

    ## 小结 - python2中列表推导式中定义的变量会覆盖前面同名的变量 - python3中不会,因为列表推导式中定义的变量只作用于列表推导式内部(局部作用域) - for循环中都会覆盖之前的变量,不管是python2还是python3
  • 相关阅读:
    EL表达式_1
    Servlet2
    Servlet1
    安装Tomcat
    Java日期时间3
    SpringCloud之Ribbon负载均衡
    SpringCloud之Eureka注册中心
    存储过程—增减字段
    880. Decoded String at Index
    977. Squares of a Sorted Array
  • 原文地址:https://www.cnblogs.com/zzliu/p/10801972.html
Copyright © 2011-2022 走看看