以下代碼:Python:如何創建新的相同列表對象?
#!/usr/bin/python
def func(listtt):
a.reverse()
a = [1, 2, 3]
b = a
print a, b
func(a)
print a, b
a = [1, 2, 3]
b = a + []
print a, b
func(a)
print a, b
產生的輸出:
[1, 2, 3] [1, 2, 3]
[3, 2, 1] [3, 2, 1]
[1, 2, 3] [1, 2, 3]
[3, 2, 1] [1, 2, 3]
據我所知,在第一示例中,A和B都指向相同的列表。我的問題是如何創建一個新的相同的列表對象?如果我有一個列表,是b = a + []創建兩個單獨但相同的列表實例的最佳方式?我想創建兩個變量,指向兩個具有完全相同值的不同列表/對象。我怎麼做?
另外,我怎麼知道哪些操作創建一個新的列表和哪些更改當前列表?我知道append更改列表,並添加兩個列表並創建一個新列表。我在https://docs.python.org/3.4/library/stdtypes.html#mutable-sequence-types中找到了可能的操作列表,但哪些操作可以執行哪些操作?
或者你可以這樣做:'new_list = copy(old_list)'。這可能在語義上比切片技巧更乾淨,但兩者都可以工作。這個問題已經被問了很多次了,我很肯定你可以通過簡單的搜索找到答案。 –