用一个已经定义的列表,初始化一个新列表。
错误方法:
firstList = [1,2,3,4,5,6]
secondList = firstList
firstList.append(20)
secondList.append(30)
print(f'firstList is : {firstList}')
print(f'secondList is : {secondList}')
输出的结果是:
firstList is : [1, 2, 3, 4, 5, 6, 20, 30]
secondList is : [1, 2, 3, 4, 5, 6, 20, 30]
错误原因是:以上方法相当于给列表firstList取了一个别名secondList,但是不管叫什么名字,还是指向同一个内存空间,操作的也是同一个内存空间。
------------------------------------------------------------------------------------------------------------------------------
正确方法(切片法):
print('\n\n')
firstList = [1,2,3,4,5,6]
secondList = firstList[:]
firstList.append(20)
secondList.append(30)
print(f'firstList is : {firstList}')
print(f'secondList is : {secondList}')
运行结果:
firstList is : [1, 2, 3, 4, 5, 6, 20]
secondList is : [1, 2, 3, 4, 5, 6, 30]
分析:firstList[:]是firstList的一个切片,这个切片包含firstList从第一个到最后一个元素,用切片的值初始化secondList。