-5 python python-2.7
此函数为列表中的每个项添加零.
def add_column(matrix):
"""
>>> m = [[0, 0], [0, 0]]
>>> add_column(m)
[[0, 0, 0], [0, 0, 0]]
>>> n = [[3, 2], [5, 1], [4, 7]]
>>> add_column(n)
[[3, 2, 0], [5, 1, 0], [4, 7, 0]]
>>> n
[[3, 2], [5, 1], [4, 7]]
"""
new_list=matrix[:]
for i in range(len(new_list)):
new_list[i].append(0)
return new_list
Run Code Online (Sandbox Code Playgroud)
它正在改变我传递的参数,而不是创建它的新对象.我如何做到这一点,以便我得到预期的结果?
>>> n = [[3, 2], [5, 1], [4, 7]]
>>> g = add_column(n)
Run Code Online (Sandbox Code Playgroud)
预期:
>>> print n
[[3, 2], [5, 1], [4, 7]]
>>> print g
[[3, 2, 0], [5, 1, 0], [4, 7, 0]]
Run Code Online (Sandbox Code Playgroud)
实际结果:
>>> print n
[[3, 2, 0], [5, 1, 0], [4, 7, 0]]
>>> print g
[[3, 2, 0], [5, 1, 0], [4, 7, 0]]
Run Code Online (Sandbox Code Playgroud)
[:]仅创建列表的浅表副本.您需要使用copy.deepcopy并创建深层副本:
from copy import deepcopy
def add_column(matrix):
...
new_list=deepcopy(matrix)
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅Wikipedia关于对象复制的文章.
| 归档时间: |
|
| 查看次数: |
54 次 |
| 最近记录: |