本文发布于 1090 天前。
初学Python.
Python的切片可以看做是list
的一个副本。
对副本的操作,理论上说并不会影响原list,例如:
test_list = ['apple', 'bannana', 'cherry']
copy_list = test_list[:] # 经典的复制list操作
copy_list[0] = 'orange' # 改变复制后表中的元素
print(test_list)
print(copy_list)
print(test_list[:][0]) # 切片的第0项是和原表第一项相同的
test_list[:][0] = 'melon' # 尝试修改切片的第0项
print(test_list)
>>>
['apple', 'bannana', 'cherry'] # 对copy_list的修改并没有影响原来的表
['orange', 'bannana', 'cherry']
apple
['apple', 'bannana', 'cherry'] # 原表并没有因为切片第0项被修改而变化
上段代码说明,切片出来的list
是原list
的一个副本。对切片的修改并不会被关联到原表。
然而如果原始的list
是个嵌套表,list
只表示元素和表的对应关系
list0 = ['01','02','03']
list1 = ['11','12','13']
test_list = [list0, list1]
copy_list = test_list[:]
copy_list[0][1] = '66'
print(f"Test_list = {test_list}")
print(f"Copy_list = {copy_list}")
>>>
Test_list = [['01', '66', '03'], ['11', '12', '13']]
Copy_list = [['01', '66', '03'], ['11', '12', '13']]
可以看到原表也发生了变化,究其根源,test_list[0]
是对应list0
这个表,而非list0
的具体内容。那么修改copy_list[0]
会直接修改list0
的内容,而变化的list0
导致了test_list[0]
的改变。