【问题标题】:Python: List argument passing [duplicate]Python:列表参数传递[重复]
【发布时间】:2016-09-05 14:54:37
【问题描述】:

我知道我们在 Python 中传递参数期间传递了对象的引用。

所以,

def changer(b):
    b[0] = "spam"

l = [1,2]
changer(l)             # l is now ["spam",2]

但是,如果我这样做了,

changer(l[:])          # l remains [1,2]

第二种情况下我传递列表切片时,传递给函数的是什么?

【问题讨论】:

  • 您将在第二个示例中传递l 的副本。
  • 请注意,此行为并非函数调用独有。如果你这样做l = [1,2]; b = l[:]; b[0] = "spam"; print(l); print(b),你会看到同样的事情发生

标签: python list


【解决方案1】:

l[:] 创建一个副本。见切片。副本被传递给函数,函数修改 l 的副本。因此,l 将保持不变。

所有切片操作都返回一个包含请求的新列表 元素。这意味着下面的切片返回一个新的(浅) 列表的副本。

【讨论】:

  • 我会将“拼接”更改为“切片”。拼接列表时,通常在原地编辑它,删除拼接部分。切片列表时,原始列表保持不变。这也与内置的slice一致。
  • 好点...谢谢。
猜你喜欢
  • 2015-06-06
  • 1970-01-01
  • 2018-09-05
  • 2015-06-28
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2012-08-26
  • 1970-01-01
相关资源
最近更新 更多