Python中a = ['a'], a[:] = ['b'] 和 a = ['b'] 有什麼不同?

前者:把a引用的list的内容清空,填上的内容
后者:让a不要引用原来的list了,转为引用这个对象

■网友
前者是先让a引用一个内容为\u0026#39;a\u0026#39;的list,然后把a引用list的内容改为\u0026#39;b\u0026#39;。
后者是先让a引用一个内容为\u0026#39;a\u0026#39;的list,然后让a引用一个内容为\u0026#39;b\u0026#39;的list。
你可以通过id函数来查看内存位置,就能知道有什么不同了。

■网友
这个问题主要涉及到列表对象赋值跟列表切片问题,第一个与第二个都属于赋值,分别表明a列表中有~"a","b"元素;第三个中应用了列表切片方法!总结,前者应用切片方法赋值,后者就是通过简单对象赋值
■网友
第二个是Python 切片赋值,数据分析经常用到,其他两个就是简单的列表赋值
■网友
提问不明第二个没人用啦,那是复制的意思假如 b = b 的值是因为你的切片没做任何操作,所以他给你返回整个数组希望能帮到你,附加我痛恨python!
■网友
from dis import disdef func1(): a = def func2(): a = a = def func3(): a = dis(func1)print \u0026#39;----------------------------------\u0026#39;dis(func2)print \u0026#39;----------------------------------\u0026#39;dis(func3) 4 0 LOAD_CONST 1 (\u0026#39;a\u0026#39;) 3 BUILD_LIST 1 6 STORE_FAST 0 (a) 9 LOAD_CONST 0 (None) 12 RETURN_VALUE ---------------------------------- 7 0 BUILD_LIST 0 3 STORE_FAST 0 (a) 8 6 LOAD_CONST 1 (\u0026#39;b\u0026#39;) 9 BUILD_LIST 1 12 LOAD_FAST 0 (a) 15 STORE_SLICE+0 16 LOAD_CONST 0 (None) 19 RETURN_VALUE ---------------------------------- 11 0 LOAD_CONST 1 (\u0026#39;b\u0026#39;) 3 BUILD_LIST 1 6 STORE_FAST 0 (a) 9 LOAD_CONST 0 (None) 12 RETURN_VALUE 【Python中a = ['a'], a[:] = ['b'] 和 a = ['b'] 有什麼不同?】 1 和 3 是一样的操作 都是新建一个列表并且赋值给a
2 是 python 的语法糖 举个例子
a = a = print a


    推荐阅读