为什么使用切片代码会把两个列表都切走啊?

代码如下:
lst =[10,20,30,40,50,60,70]
#切片操作
#不产生新列表,
Lst1=lst
print(Lst)
Lst1[0:4]=[]
print (Lst1)
print (Lst)

输出如下:
[10,20,30,40,50,60,70]
[50,60,70]
[50,60,70]
为什么两个列表都会改变啊?

list是可变值类型,Lst1=lst这个操作中,Lst1指向的是lst的地址,你操作一个,另一个也会变
想让它不变
你需要这样
Lst1=lst.copy()
或者
Lst1=lst[:]

建议楼主去看下python的浅拷贝和深拷贝,你这一块儿两个列表指针指的是同一份数据

你这种切片方式在lst原内存空间做了切片处理,所以lst也跟着变了。更改成这样
lst =[10,20,30,40,50,60,70]
#切片操作
Lst1=lst
print(lst,id(lst))
Lst1 = lst[0:4]
print (Lst1,id(Lst1))
print (lst,id(lst))

你这样赋值是浅copy会同步改变
你如果不需要同步变化就用深copy

img

Lst1=lst
这个是赋值操作,相当于lst的值引用给Lst1。
它们指向的是同一个内存空间
所有你改一个,两个变量的值都改了

Lst1=lst
单纯的用等号赋值,就是所谓的浅拷贝,是相当于复制了lst的引用给Lst1,可以理解为两者指向的是同一块内存地址,所以无论改变哪个都会改变该地址的值;
如果是要两者独立没有关系,就要用到深拷贝:

import copy
copy.deepcopy()