Python2.X中,在列表推导中for关键词之后的赋值操作可能会影响列表推导上下文中的同名变量。像下面这个Python2.7控制台对话:

>>> x = "my precious"
>>> dummy = [x for x in "ABC"]
>>> x
'C' 

如你所见,x原本的值被取代了,但是这种情况在Python3.X中是不会出现的。
列表推导、生成器表达式,以及同他们很相似的集合(set)推导和字典(dict)推导,在Python3中都有了自己的局部作用域,就像函数似的。表达式内部的变量和赋值只在局部起作用,表达式的上下文的同名变量还可以被正常引用,局部变量并不会影响他们。
这是Python3的代码:

>>> x = "ABC"
>>> dummy = [ord(x) for x in x]
>>> x
"ABC"
>>> dummy
[65,66,67]

可以看到,x的值被保留了,列表推导也创建了正确的列表。

Python3列表推导不会再有变量泄露的问题相关推荐

  1. python3列表推导式

    列表推导式提供了从序列创建列表的简单途径.通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列. 每个列表推导式都在 for 之后跟一个 ...

  2. python3列表推导式矩阵转置_python3进阶之推导式1之列表(list)推导式(comprehensions)...

    1.前言 推导式,英文名字叫comprehensions,注意与comprehension(理解)只有s字母之差.推导式又可以叫解析式,推导式可以从一种数据序列构建新的数据序列的结构体.推导式分为,列 ...

  3. python3 列表推导式_Python3 之 列表推导式

    列表推导式(又称列表解析式)提供了一种简明扼要的方法来创建列表. 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句.那个表达式可以是任意的, ...

  4. Python坑:bool是int的子类、列表循环中的变量泄露、lambda在闭包中会保存局部变量、重用全局变量

    bool是int的子类 a = True print isinstance(a, int) print True == 1 print False == 0 运行结果: True True True ...

  5. 【笔记】Python 列表推导式(表达式 for 变量 in 列表 if 表达式 ) 执行顺序

    列表推导式用于使用其他列表创建一个新列表. 一般形式:中括号内含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句. [表达式 for 变量 in 列表 if 表达式] ...

  6. python中哪个函数能生成集合_神奇的python系列11:函数之生成器,列表推导式

    1.生成器 生成器的本质是迭代器. 在python中有三种方式来获取生成器 1.通过生成器函数 2.通过各种推到式来实现生成器 3.通过数据的转换也可以获取生成器 #函数 deffunc():prin ...

  7. python列表推导式实现从1加到100_python之生成器和列表推导式

    一.生成器函数 1.生成器:就是自己用python代码写的迭代器,生成器的本质就是迭代器(所以自带了__iter__方法和__next__方法,不需要我们去实现). 2.用以下两种方式构建一个生成器: ...

  8. python 列表推导_说说在 Python 中如何使用列表推导

    1 从示例说起 Luciano Ramalho 举了这样一个示例,把一个字符串转为 Unicode 码的列表. 传统写法是这样的: symbols='@#$%^&' codes=[] for ...

  9. format函数python生成列表_python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)...

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

最新文章

  1. SUSE LINUX下文件系统变只读的问题解决
  2. hihoCoder1040 矩形判断
  3. Java 函数式编程和 lambda 表达式
  4. FCN网络的训练——以SIFT-Flow 数据集为例
  5. 【树莓派】树莓派3B安装宝塔面板并配置安装LNMP
  6. PHP 调用shell命令
  7. jquery 图像滑块_jQuery CSS图像滑块–自行编写代码
  8. JZ3-从尾到头打印链表
  9. 大并发服务器不得不说的技术--TCP_CORK
  10. mybatis insert 如何返回主键
  11. python识别cad图纸_手把手教你广联达软件如何识别天正CAD图纸
  12. git合并工具-DiffMerge
  13. AI+科学计算-昇思MindSpore都给我们带来哪些惊喜?
  14. ATO(韩商爱拓)1Gbit SPI NAND Flash领先全球
  15. ccs 动态梦幻西游
  16. 惠普计算机工作站,HP 笔记本计算机和移动工作站电池安全召回和更换计划
  17. 石器时代linux架设教程,CentOS 6.5架设石器时代教程(客户端篇)
  18. 组装手机DIY时代或将到来
  19. 内网映射软件之80端口映射和全端口映射实现发布网站访问内网
  20. 28岁,转行学IT还来得及么?

热门文章

  1. DataGrid与SQL Server 2000数据绑定
  2. [转载] numpy总结
  3. [转载] java中final,finally,finalize三者的作用和区别
  4. Win10的WSL很好用呀
  5. Go 用JSON加载表格数据
  6. Leetcode: 2. Add Two Numbers
  7. Oracle redo 日志切换时间频率
  8. CSS样式中,background-image 背景图片居中显示并且在不同屏幕分辨率下始终居中
  9. Android APK反编译详解(转)
  10. ROS+Gazebo仿真差速小车并实现控制