1、赋值运算(赋值是同一个内存地址)
(1)列表
例子:
li = [1,2,3]
li1 = li
li.append('barry')
print(li,id(li)) # [1, 2, 3, 'barry'] 4874824
print(li1,id(li1)) # [1, 2, 3, 'barry'] 4874824
(2)字典
例子:
dic1 = {
"name":"江河",
"age":18,
"heigh":180
}
dic2 = dic1
dic1.setdefault('address','北京')
print(dic1,id(dic1)) # {'name': '江河', 'age': 18, 'heigh': 180, 'address': '北京'} 30834192
print(dic2,id(dic2)) # {'name': '江河', 'age': 18, 'heigh': 180, 'address': '北京'} 30834192
如图:
(3)字符串
例子:
s = 'alex'
s1 = s
s = s.replace('a','A')
s1 = s.replace('e','E')
print(s,id(s)) # Alex 36902536
print(s1,id(s1)) # AlEx 36932888
2、深浅(copy)
(1)浅copy:对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的是同一个内存地址,对于第二层以及
更深层次来说,保持一致性
例子:浅copy()和赋值不一样
浅copy()列表、字典都一样,以list列表为例
例子1:
li = [1,2,3]
li1 = li.copy() # id内存地址不一样,创建一个新的内存空间
li.append('添加')
print(li,id(li)) # [1, 2, 3, '添加'] 30302792
print(li1,id(li1)) # [1, 2, 3] 30302856
例子2:
嵌套(第二层内存地址一致) :整体的内存地址不一样,嵌套的内存地址一样
li1 = [1,2,3,[33,44,55],4,5,6]
li2 = li1.copy()
li1.append(66)
print(li1,id(li1),li1[3],id(li1[3])) # [1, 2, 3, [33, 44, 55], 4, 5, 6, 66] 4874888 [33, 44, 55] 4874824
print(li2,id(li2),li2[3],id(li2[3]))
# [1, 2, 3, [33, 44, 55], 4, 5, 6] 31132616 [33, 44, 55] 4874824
(2)深copy():对于深copy()来说,两个是完全独立,改变任意一个元素(无论多少层),另一个内存地址绝对不会改变
例子:
import copy
li1 = [1,2,3,[33,44,55],4,5,6]
li2 = copy.deepcopy(li1)
# 改变第一层
li1.append(15)
print(li1,id(li1),li1[3],id(li1[3]))
# [1, 2, 3, [33, 44, 55], 4, 5, 6, 15] 35468808 [33, 44, 55] 35470024
print(li2,id(li2),li2[3],id(li2[3]))
# [1, 2, 3, [33, 44, 55], 4, 5, 6] 35613896 [33, 44, 55] 35613960
# 改变第二层
li1[3].append(66)
print(li1,id(li1),li1[3],id(li1[3]))
# [1, 2, 3, [33, 44, 55, 66], 4, 5, 6, 15] 35468808 [33, 44, 55, 66] 35470024
print(li2,id(li2),li2[3],id(li2[3]))
# [1, 2, 3, [33, 44, 55], 4, 5, 6] 35613896 [33, 44, 55] 35613960
3、enumerate() :用于将一个可遍历的数据对象(如:列表、字符串或元组)组合成为一个索引序列,同时列出数据和数据下标,一般用在for循环中
enumerate(sequence,[start=0])
sequence---一个序列可迭代的对象,start----下标起始位置
例子
li = ['alex','taibai','wusir','egon']
for i in li:
print(li.index(i),i)
for index ,i in enumerate(li,2):
print(index,i)