Python中的本地和全局变量用法

时间:2016-10-01 13:04:28

标签: python list global-variables reverse local-variables

我正在测试反向功能。我的代码如下:

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]],但它只适用于我的函数。

我无法在全局变量中更改它。我怎样才能实现呢?谢谢

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()