列表: 列表就是一组有序数据的组合。列表中的数据可以修改。
列表的声明:
声明一个空列表: 变量 = [] 或者 变量 = list()
声明带有数据的列表:
变量 = [值,值,值…]
变量 = list(容器类数据) 本质上就是类型转换
列表的基本操作:
访问列表中的值:变量[索引]
list=[1,2,3,4,5]
print(list[1])
修改列表中的值:变量[索引] = 新值
list=[1,2,3,4,5]
list[1]=7
print(list)
删除列表中的值:del 变量[索引]
list=[1,2,3,4]
del list[1]
print(list)
添加列表中的值:不可以使用索引直接增加,但可以添加字符串
list=[1,2,3,4,5]
list[1:2]="3"
print(list)
列表的分片操作:
基本格式:
变量[开始索引:结束索引] 从开始索引获取到结束索引之前(不包含结束索引)
变量[开始索引:] 从开始索引位置截取到最后
变量[:结束索引] 从开头截取到结束索引之前(不包含结束索引)
变量[:] 截取整个列表内容
高级格式:
变量[开始索引:结束索引:跳步值]
注意:跳步值为负数意思是取反向切片!反向切片时,默认的开始位置为最后一个元素,终止位置为第一个元素的前一个位置
list1 = ["薛飞","王淞民","赵成龙","刘天宇","武章忠"]
print(list1[-1:0:-2])
列表的分片赋值: 可以实现列表的增删改查操作。
1.增加内容
变量[开始索引:结束索引] = 列表数据 (注意开始索引与结束索引一致,在指定索引之前增加内容)
2.删除内容
变量[开始索引:结束索引] = [] (删除了开始索引到结束索引之间的数据,不包含结束索引位置)
list1 = ["薛飞","王淞民","赵成龙","刘天宇","武章忠"]
del list1[0:4:2]
print(list1)
3.修改内容
变量[开始索引:结束索引] = 列表数据 (一般保持删除多少,添加多少,就是修改操作)
list1[0:4:2] = ["张文广","文广张"]
print(list1)
list1[0:2] = []
print(list1)
列表的其他运算:
* 列表乘法运算【序列相乘运算】
list1 = ["邓克胜","徐玉玲","吴志辉"]
res = list1 * 3
print(res)
- 列表加法运算【序列相加运算】
list1 = ["邓克胜","徐玉玲","吴志辉"]
list2 = ["张文广","大帅哥","马艺楠","代帅林"]
res = list2 + list1
print(res)
in 和 not in 成员检测运算
列表具有穿透性。(变量的作用域)
list1 = [1,2,3,4]
def func():
list1[2] = 9
print(list1) #1
def inner():
list1[1] = 10
print(list1) #2
inner()
func()
print("list1的值是",list1) #3
1 10 9 4
列表常用函数:
max() 获取列表中的最大值或者多个参数中的最大值
max(列表)
max(值,值,…)
min() 获取列表中的最小值或者多个参数中的最小值
min(列表)
min(值,值,…)
len()获取容器类数据的长度
len(容器类数据)
list() 声明列表或者将其他容器类数据转换为列表
列表的遍历:
使用for…in或者while遍历即可
ist=[1,2,3,4]
i=0
while i<4:
print(list[i])
i=i+1
i=0
while True:
print(list[i])
i=i+1
if i==4:
break
列表内涵list content:列表推导式
列表推导式就是采用表达式的方式直接过滤数据并且返回新的列表的操作
基本推导式:
结果变量 = [变量 for 变量 in 容器]
res = [i*2 for i in range(4)]
print(res)
带判断条件的推导式:
结果变量 = [变量 for 变量 in 容器 条件表达式] *
res = [i for i in range(10) if i % 2 == 0]
print(res)
判断条件表达式在前(了解即可):
结果变量 = [变量 条件表达式真区间值 else 假区间值 for 变量 in 容器]
res = [i if i % 2 == 0 else "假值" for i in range(10)]
print(res)
多循环列表推导式:
结果变量 = [变量1 运算 变量2 for 变量1 in 容器 for 变量2 in 容器]
res = [i+j*k for i in range(1,4) for j in range(4,6) for k in range(6,8)]
i : 1,2,3 j:4,5 k:6,7
#[25,29,31,36,26,30,32,37,27,31,33,38]
带判断条件的多循环推导式:
结果变量 = [变量1 运算 变量2 for 变量1 in 容器 for 变量2 in 容器 条件表达式] *
res = [i+j*k for i in range(1,4) for j in range(4,6) for k in range(6,8) if i+j*k < 30]
print(res)
判断条件表达式在前(了解即可):
结果变量 = [变量1 运算 变量2 条件表达式真区间值 else 假区间值 for 变量1 in 容器 for 变量2 in 容器]
res = [i+j*k if i+j*k < 30 else "大于30" for i in range(1,4) for j in range(4,6) for k in range(6,8)]
print(res)
列表相关的函数(方法):
append() 在列表的最后添加一个数据 *
列表.append(值)
list1 = ["上海","城隍庙","北京"]
list1.append("糖葫芦")
print(list1)
list1 = []
for i in range(5):
if i % 2 == 0:
list1.append(i)
print(list1)
insert() 在列表的指定索引之前添加数据 *
列表.insert(索引位置,值)
list=[1,2,3,4]
list.insert(1,5)
print(list)
pop() 在列表的指定索引位置删除数据 *
列表.pop() 默认删除最后一个
列表.pop(索引位置)
list1 = ["喜羊羊","青青草原","我最狂","dj狼"]
list1.pop() # 不写参数,默认是删除最后一个数据
print(list1)
根据索引删除值
list1.pop(1)
print(list1)
remove() 在列表中删除指定数据 *
列表.remove(值)
list2 = ["马杀鸡","spa","泰式按摩","踩背","大宝剑"]
list2.remove("spa")
print(list2)
list3 = list2[:] # 浅拷贝
for i in list2:
list3.remove(i)
print(list3)
clear() 清空列表 *
列表.clear()
list2 = ["马杀鸡","spa","泰式按摩","踩背","大宝剑"]
list2.clear()
print(list2)
copy() 复制列表 *
列表.copy()
copy() 复制列表
list2 = ["马杀鸡","spa","泰式按摩","踩背","大宝剑"]
list1 = list2.copy() # 浅拷贝
print(list1)
定义变量, 赋值
a = [1,2,3,4]
b = a
b[0] = 2
print(b)
print(a)
拷贝
浅拷贝
a = [1,2,3,4]
b = a.copy()
b[0] = 2
print(b)
print(a)
第二种浅拷贝
b = a[:]
a[0] = 2
print(b)
print(a)
第三种浅拷贝
import copy
b = copy.copy(a)
a[0] = 2
print(a)
print(b)
浅拷贝 只对父级元素拷贝的
list1 = [1,2,[3,4]]
list2 = list1.copy()
list1[2][0] = 5
print(list1)
print(list2)
深拷贝:拷贝的是对象本身,是一个单独的对象,只是值和原对象一样而已
import copy
list1 = [1,2,[3,4,[5,6]]]
list2 = copy.deepcopy(list1)
list1[2][2][1] = 7
print(list1)
print(list2)
count() 计算列表中指定数据出现的次数 *
列表.count(值)
list1 = ["张文广","兄弟连","帅","帅","帅哥"]
res = list1.count("帅比")
print(res)
extend() 将2个列表合并位1个 *
列表.extend(列表)
list1 = [1,2,3]
list2 = [4,5,6]
list2.extend(list1)
print(list2)
reverse() 列表反转
列表.reverse()
list1 = [“python”,“java”,“php”,“h5”]
list1.reverse()
print(list1)
sort() 列表排序(用法和sorted一样) *
1.直接排序
2.函数排序
list1 = [1,4,2,5,7,3]
list1.sort(key=lambda x:x%2)
print(list1)
index() 获取某个值在列表中的索引 *
列表.index(值)
list1 = [1,2,3,2,4,5]
res = list1.index(2)
print(res)