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中优化了这个问题,所以会报错






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论