# [1] 累积
>>> def f(a, L=[]):
... L.append(a)
... return L
...
>>> print(f(1))
[1]
>>> print(f(2))
[1, 2]
# [2] 不累积
>>> def f(a, L=None):
... if L is None:
... L = []
... L.append(a)
... return L
...
>>> print(f(1))
[1]
>>> print(f(3))
[3]
# [3] 调换矩阵行和列
>>> matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> a = []
>>> for i in range(4):
... a_row = []
... for row in matrix:
... a_row.append(row[i])
... a.append(a_row)
...
>>> a
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
问题: [3] 中列表 a_row 不累积??是因为列表的作用域吗??那上面的 [1] 累积的列表又是什么情况??不是每次调用都赋值为[]吗??还是应为列表是不可变的,混乱了,根本不知道自己在想什么,求大神给我脑袋一砖……
>>> def f(a, L=[]):
... L.append(a)
... return L
...
>>> print(f(1))
[1]
>>> print(f(2))
[1, 2]
# [2] 不累积
>>> def f(a, L=None):
... if L is None:
... L = []
... L.append(a)
... return L
...
>>> print(f(1))
[1]
>>> print(f(3))
[3]
# [3] 调换矩阵行和列
>>> matrix = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
>>> a = []
>>> for i in range(4):
... a_row = []
... for row in matrix:
... a_row.append(row[i])
... a.append(a_row)
...
>>> a
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
问题: [3] 中列表 a_row 不累积??是因为列表的作用域吗??那上面的 [1] 累积的列表又是什么情况??不是每次调用都赋值为[]吗??还是应为列表是不可变的,混乱了,根本不知道自己在想什么,求大神给我脑袋一砖……
