代码之家  ›  专栏  ›  技术社区  ›  DBedrenko

如何将新列表分配给作为参数传递的列表?

  •  0
  • DBedrenko  · 技术社区  · 7 年前

    我正在为一个函数实现一个API,该函数需要接受一个列表,对其进行一些修改,然后将out参数设置为副本。i、 函数不返回任何内容,但必须更改作为参数传入的列表对象。

    l = [1,2,3]
    
    def f(passed_in_list):
       different_list = [4,5,6]
       passed_in_list = different_list[:]
    
    print(l)   # Prints [1,2,3]. How to make it [4,5,6] ?
    

    3 回复  |  直到 7 年前
        1
  •  1
  •   khachik    7 年前

    l = [1,2,3]
    
    
    def f(passed_in_list):
       different_list = [4,5,6]
       passed_in_list[:] = different_list[:]
    
    
    f(l)
    print(l)
    
        2
  •  2
  •   Sven Harris    7 年前

    在我看来,这是一种危险的设计模式,它在全局范围内创建了一个具有故意副作用的函数。我会小心做这样的事。也就是说,看起来你没有调用你的函数,这可能就是为什么你没有看到你所期望的。

        3
  •  1
  •   rahlf23    7 年前

    l = [1,2,3]
    
    def f(passed_in_list):
    
       passed_in_list[:] = [4,5,6]
    
    f(l)
    
    print(l)
    

    产量:

    [4, 5, 6]
    
    推荐文章