前言
- 初学Python,姑妄言之,如有错误之处,恳请留言区指正
python序列类似于C等语言中的数组,但又被称为"打激素的"数组,因为它的功能比数组强大许多,序列分为有序序列(列表、元组、字符串、zip与map等)与无序序列(字典、集合),也分为可变序列(列表、字典、集合)与不可变序列(元组、字符串、zip与map等);python序列支持负数作为索引表示倒数第几个;
一、列表与列表推导式 (list)
- 列表是Python最重要的内置可变序列之一,是包含若干元素的有序连续内存空间;
- 列表所有元素放在"[ ]"之间,相邻元素用逗号隔开;
- 列表增加或者删除元素时,列表对象自动进行内存的扩张与收缩,从而保证元素之间无缝隙;
- 插入与删除非尾部元素会造成大量元素的移动,尽量避免;
- 列表中各元素的类型可以各不相同;(Python采用基于值得内存管理模式,变量储存值的引用,因此可以)
- 列表支持负数作为索引:a_list[-4]表示a_list的倒数第四个元素;
1、 列表的创建与删除
创建:直接用"="将一个列表赋值给一个变量即可
a_list1 = [1,2,3,4,"abc",'a',[5,6,7]] #合法的列表对象
也可以用list()函数将元组、字符串、字典、集合等其他可迭代对象转换为列表
a_llist2 = list((1,2,3,4,5)) #将元组转换为列表
a_list3 = list({"a":1,"b":2,"c":3}) #将字典转换为列表,默认转换键,用items()函数转换键值对,用values()转换值;
删除:当一个列表不再使用时,用del命令将其删除,也可以使用del删除列表。字典等可变序列中的部分元素
del a_list1 #删除a_list1列表
del a_list2[3] #删除了a_list的第四个元素(下标从0开始)[1,2,3,5]
不可以删除元组等不可变序列的部分元素,会报错
2、 列表的常用方法
Ⅰ、append()、insert()、extend()增加元素
- append(x)用于向列表尾部追加一个元素
- insert(index,x)用于像列表指定位置插入一个元素
- extend(L)用于将另一个列表中的所有元素追加至当前列表的后面
注意:这三个函数是在原地操作列表,不影响该对象地址,而用+与*增加元素会返回新列表、改变其地址;用+=也属于原地操作;
#代码示例
a_list = [1,2,3,4]; print(a_list)
print("初始地址:",id(a_list))
a_list.append(5); print(a_list) #调用三个函数后打印其值
a_list.insert(0,0); print(a_list)
a_list.extend([6,7]); print(a_list)
print("调用三个函数后:",id(a_list))
a_list += [5,6,7]; print(a_list)
print("用+=连接后:",id(a_list)) #使用+=连接不改变地址
a_list = a_list + [5,6,7]; print(a_list) #使用+连接改变地址
print("用+连接后:",id(a_list))
#运行结果
[1, 2, 3, 4]
初始地址: 1459194026560
[1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6, 7]
调用三个函数后: 1459194026560
[0, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7]
用+=连接后: 1459194026560
[0, 1, 2, 3, 4, 5, 6, 7, 5, 6, 7, 5, 6, 7]
用+连接后: 1459194027200
Ⅱ、pop()、remove()、clear() 删除元素
这三个方法用于删除列表中的元素:
- pop([index])用于删除并返回指定位置上的一个元素
- remove(x)用于删除列表中第一个值与指定值相等的元素
- clear()用于清空列表
这三个操作也属于原地操作;也可以使用del删除列表中指定位置的元素,也为原地操作;
#代码示例
a_list = [0,1,2,3,2,5,6,7]
print("初始值: ",a_list)
print("初始地址:",id(a_list))
print("pop()返回值: ",a_list.pop()) #无参数时删除最后一个
print("调用pop()后: ",a_list)
print("pop(5)返回值:",a_list.pop(5))
print("调用pop(5)后:",a_list)
a_list.remove(2)
print("调用remove(2)后:",a_list)
del a_list[0] #使用del命令删除第0个元素
print("使用del命令后:",a_list)
print("使用del命令后地址:",id(a_list))
a_list.clear()
print("调用clear()后:",a_list)
print("调用三个函数后地址:",id(a_list))
#运行结果
初始值: [0, 1, 2, 3, 2, 5, 6, 7]
初始地址: 1459195211904
pop()返回值: 7
调用pop()后: [0, 1, 2, 3, 2, 5, 6]
pop(5)返回值: 5
调用pop(5)后: [0, 1, 2, 3, 2, 6]
调用remove(2)后: [0, 1, 3, 2, 6]
使用del命令后: [1, 3, 2, 6]
使用del命令后地址: 1459195211904
调用clear()后: []
调用三个函数后地址: 1459195