热线电话:13121318867

登录
2019-02-18 阅读量: 681
Python 2 和 Python 3 列表推导的区别

Python 2 和 Python 3 列表推导的区别

测试了一个列表推导,在 Python 3 中无法运行,啥原因?

# python2  
matrix = [[1,2,3],[4,5,6],[7,8,9]]
[x for row in matrix for x in row]
# 值是 [1, 2, 3, 4, 5, 6, 7, 8, 9]
[x for x in row for row in matrix]
# 值是 [7, 7, 7, 8, 8, 8, 9, 9, 9]

# python3  
matrix = [[1,2,3],[4,5,6],[7,8,9]]
[x for row in matrix for x in row]
# 值是 [1, 2, 3, 4, 5, 6, 7, 8, 9]
[x for x in row for row in matrix]
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# NameError: name 'row' is not defined

答:python2和python3列表推导的作用域有区别

在python2中先运行了[x for row in matrix for x in row] 内存中已经有row 因此会有结果,但是python3中优化了这个问题,所以会报错

25.7508
3
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子