列表 list
定义:由一系列变量组成的可变序列容器。
一、基础操作
1.创建列表:有两种方式
列表名 = [] (里面可以是不同数据类型)
列表名 = list(可迭代对象) (里面必须是相同数据类型)
list01 = [2,"大强",True]
list01 = list("我叫苏明玉")
list01 = list(range(5))
2.添加元素:
列表名.append(元素)
末尾追加
list02.append("悟空")
list02.append("唐僧")
print(list02) # ['悟空', '唐僧']
列表.insert(索引,元素)
在指定位置前面插入元素
list02=['悟空', '唐僧']
list02.insert(1,"八戒")
print(list02) # ['悟空', '八戒', '唐僧']
遍历列表:
正向:for 变量名 in 列表名: 变量名就是元素 (不灵活)
# 只支持:正向顺序查找
for item in list01:
print(item)
# item = 0 # 不能修改
for 变量名 in (len(列表名)): 列表名[索引名]就是元素 (常用)
索引 + for 定义元素
# 获取列表中每个元素
# 正向
for i in range(len(list01)):
print(list01[i])
# list01[i] =0
反向倒叙:for 索引名 in range(len(列表名)-1,-1,-1): 列表名[索引名]就是元素
# 倒序
for i in range(len(list01)-1,-1,-1):
print(list01[i])
正向跳:for 变量名 in (0:len(列表名):n): 列表名[索引名]就是元素
# 正向跳着
for i in range(0,len(list01),2):
print(list01[i])
反向跳:for 索引名 in range(len(列表名)-1,-1,-n): 列表名[索引名]就是元素
# 反向跳着
for i in range(len(list01)-1,-1,-2):
print(list01[i])
删除元素:
列表名.remove(元素)
del 列表名[索引或切片]
list02.remove("悟空")
删除list02中“悟空”的元素
del list02[1]
删除1的位置的元素
修改元素、替换元素、定位元素
修改元素
list03=[1,2,3,4,5,6,]
list03[5] = "沙僧"
print(list03) #[1, 2, 3, 4, 5, '沙僧']
通过切片获取一个新列表
list04 = list03[:3]
print(list04) #[1, 2, 3]
通过切片可以修改元素
list03[:3] = ["a"]
print(list03) #['a', 4, 5, '沙僧']
二、深拷贝和浅拷贝
浅拷贝:是在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
深拷贝:复制整个依懒的变量。
三、列表VS字符串
1.列表和字符串都是序列,元素之间有先后顺序关系。
2.字符串是不可变的序列,列表是可变的序列。
3.字符串中每个元素只能存储字符,而列表可以存储任意类型。
4.列表和字符串都是可迭代对象。
函数:
将多个字符串拼接为一个。
result = "连接符".join(列表)
将一个字符串拆分为多个。
列表 = “a-b-c-d”.split(“分隔符”)
字符串 --> 列表
str02 = "How are you"
list_result = str02.split(" ")
print(list_result) #['How', 'are', 'you']
列表 -->字符串(反转)
str_result = " ".join(list_result[::-1])
print(str_result) # you are How
四、列表推导式
定义:使用简易方法,将可迭代对象转换为列表。
语法:
变量 = [表达式 for 变量 in 可迭代对象]
变量 = [表达式 for 变量 in 可迭代对象 if 条件]
说明:如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。
列表推导式嵌套
语法:变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]
# 需求:list01中所有元素的平方存入list02中
# 传统写法
list01 = [4,5,5,66,7,8,9]
list02 = []
for item in list01:
list02.append(item ** 2)
print(list02)
# 推导式写法
list03 = [item ** 2 for item in list01]
print(list03)