我在list.append和list.pop中遇到了一个非常有趣的问题,如下面的代码所示
Sub CreateAndNameWorksheets()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Sheets("Master").Range("A2:A20")
Sheets("Template").Copy After:=Sheets(Sheets.Count)
With c
ActiveSheet.Name = .Value
.Parent.Hyperlinks.Add Anchor:=c, Address:="", SubAddress:= _
"'" & .Text & "'!A1", TextToDisplay:=.Text
End With
Next c
Application.ScreenUpdating = True
End Sub
输出为
x = [1,2]
y = []
y.append(x)
print(y)
print("------")
x.pop()
print(y)
有什么方法可以将print(y)保持为[[1,2]] 谢谢
编辑:还有,有人知道为什么会这样吗?
答案 0 :(得分:2)
这样做的时候
y.append(x)
您要在x
列表中添加对y
对象的引用。当您执行x.pop()
时,将对x
的所有引用执行该操作,其中包括y
中的引用。
要复制该列表,您可以执行
y.append(x[:])
哪个切片返回列表中的所有项目-本质上是一个副本。如果您不喜欢这种语法,并且使用的是Python 3,则可以使用
y.append(x.copy())
这在您的代码中可能会更清楚。有关复制列表的其他几种选择,请参见this answer。