lst = list()
lst = list(range(5))
lst = [1,3,5]
in
[3, 4] in [1, 2, [3, 4]]
python中==和is的区别
例:list1=list(range(5))
list2=list(range(5))
list1 == list2 返回 True
list1 is list2 返回False
copy() —>List
In [3]: lst0 = [1,2,[3,4,5],6]
# copy为浅拷贝,即按照lst0的内容生成lst5
In [4]: lst5 = list.copy(lst0)
# 此时lst0和lst5的值一样,所以==判断为True
In [5]: lst0 == lst5
Out[5]: True
# 但是id不同,故is判断为False
In [6]: lst0 is lst5
Out[6]: False
# 修改lst0[3]的值,观察变化
In [7]: lst0[3] = 20
# 此时lst0和lst5的值不一样,所以==判断为False
In [8]: lst0 == lst5
Out[8]: False
# 可观察lst0和lst5的值
In [9]: lst0
Out[9]: [1, 2, [3, 4, 5], 20]
In [10]: lst5
Out[10]: [1, 2, [3, 4, 5], 6]
# 将lst的值恢复
In [13]: lst0[3] = 6
In [14]: lst0 == lst5
Out[14]: True
# 修改lst0中嵌套的列表的值,观察变化
In [15]: lst0[2][2]= 20
# 虽然只修改了lst0,但lst0和lst5的值依旧相同,原因就在于copy为浅复制,对于嵌套的其他对象,只是做了对象的引用而已
In [16]: lst0 == lst5
Out[16]: True
In [17]: lst0
Out[17]: [1, 2, [3, 4, 20], 6]
In [18]: lst5
Out[18]: [1, 2, [3, 4, 20], 6]
deepcopy(old) —>List
In [21]: import copy
In [22]: lst8 = [1, 2, [3, 4, 20], 6]
In [23]: newlist = copy.deepcopy(lst8)
In [24]: lst8 == newlist
Out[24]: True
In [25]: lst8 is newlist
Out[25]: False
# 无论有多少层,都不会影响旧列表
In [26]: newlist[2][2] = 80
In [27]: lst8 == newlist
Out[27]: False
In [28]: lst8
Out[28]: [1, 2, [3, 4, 20], 6]
In [29]: newlst
In [30]: newlist
Out[30]: [1, 2, [3, 4, 80], 6]
原文:https://www.cnblogs.com/larry-yu/p/15009840.html