-
list 列表
(1)语法格式:[元素1,元素2,元素3...]
list_data = [1, 2]
print(list_data, type(list_data))
(2)空列表:list_data = []
print(bool(list_data)) # 判断是否为真假
(3)类型()
list_data = list("123")
list_data = liat((1, 2, 3))
(4)改变元素内容
list_data[2] = 10 #在原列表上改(浅拷贝)
(5)增加元素:[只能添加一个元素]
list_data.append(11) #原列表跟copy列表都添加(浅拷贝)
注:list中的办法:help(list)
(6)移除列表中所有的元素:
list_data.clear() # {产生一个新的列表}(浅拷贝)
(7)打印类型的id
print(id(类名)) 返回一个对象的标识
(8)扩展列表:【没有返回值】
list_data.extend([7, 8, 9])
(9)插入元素:
list_data.insert(2{插入的位置},3{数值})
(10)弹出数值
pop_data = List_data.pop()
print(pop_data)
(11)移除数值
list_data= [1,2,3,1]
list_data.romove(1)【移除1,第一个优先】
(12)原地倒置数值reverse
list_data.reverse()
(13)排序数列
list_datad = [243567]
list_data.sort()
print(list_data)
-
2.浅拷贝shallow copy
list_data = [...]
copy_list = list_data.copy()
copy_liat[2]append("Java")
可变的元素指向会变,不可变的元素会指向同一个地址
-
由于 Python 内部引用计数的特性,对于不可变对象,浅拷贝和深拷贝的作用是一致的,就相当于复制了一份副本,原对象内部的不可变对象的改变,不会影响到复制对象
-
浅拷贝的拷贝。其实是拷贝了原始元素的引用(内存地址),所以当拷贝可变对象时,原对象内可变对象的对应元素的改变,会在复制对象的对应元素上,有所体现
-
深拷贝在遇到可变对象时,又在内部做了新建了一个副本。所以,不管它内部的元素如何变化,都不会影响到原来副本的可变对象
-
扩展列表extend list
扩展列表:isterable:str,tuple,
list_data = [1, 2, 3, 4]
liat-data.extend("123")
4.元组真的不可变吗?
tuple_data = ("123", 8, [1, 2, 3])
tuple_data[0] = 23 # {不会变 }
tuple_data [2] [1] = 5 # {会变}
难点:深拷贝和浅拷贝的区别(搞懂)