测试了一个列表推导,在 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
这和python没关系,你测试能运行,是因为你先运行了[x for row in matrix for x in row],这时row变量是存在的所以没报错