我正在测试反向功能。我的代码如下:
def deep_reverse(L):
new_list = []
for element in L:
new_list += [element[::-1]]
L = new_list[::-1]
L = [[1, 2], [3, 4], [5, 6, 7]]
deep_reverse(L)
print(L)
我希望我的输出L可以像[[7,6,5],[4,3],[2,1]],但它只适用于我的函数。
我无法在全局变量中更改它。我怎样才能实现呢?谢谢
答案 0 :(得分:1)
L
只是一个局部变量,为其分配一个新对象不会改变原始列表;它只是将函数中的名称L
指向另一个对象。请参阅Ned Batchelder's excellent explanation about Python names。
您可以通过分配L
标识片代替列表[:]
引用中的所有元素:
L[:] = new_list[::-1]
但是,像列表这样的可变序列有一个list.reverse()
method,所以你可以使用它来反转列表:
L.reverse()
对每个子列表执行相同的操作:
def deep_reverse(L):
""" assumes L is a list of lists whose elements are ints
Mutates L such that it reverses its elements and also
reverses the order of the int elements in every element of L.
It does not return anything.
"""
for element in L:
element.reverse()
L.reverse()