Python小白学习笔记四(容器类型 2 列表 )
容器类型 2 列表
列表 list
定义:由一系列变量组成的可变序列容器。
基础操作
- 创建列表:
列表名 = []
列表名 = list(可迭代对象)
2.添加元素:
列表名.append(元素) (追加)
例如:list_name.append("姓名") #将姓名加到末尾
列表.insert(索引,元素) (插入)
如:list.insert(2, "内容") # 2是位置
例如:list_names.insert(2, "张天旺")
3.定位元素:
列表名[索引] = 元素
变量 = 列表名[索引]
变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表
列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表。遍历列表:
正向:
for 变量名 in 列表名:
变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
列表名[索引名]就是元素
4.删除元素:
列表名.remove(元素)
del 列表名[索引或切片]
1 # 列表 -- 基础操作 2 定位 3 # 遍历 4 list_names = ["马伟帅", "秦世杰", "乔海瑞", "钱涛"] 5 # 定位 6 # -- 索引:容器名[整数] 7 # -- 1. 读取 8 element = list_names[-1] 9 print(element) 10 # -- 2. 修改 11 list_names[-1] = "涛涛" 12 print(list_names) 13 14 # -- 切片:容器名[整数:整数:整数] 15 # -- 1. 通过切片读取,创建新列表(拷贝) 16 names = list_names[:3] 17 print(names) 18 # -- 2. 通过切片修改,遍历右侧数据,依次存入左侧. 19 list_names[:3] = ["帅帅帅", "秦秦", "瑞瑞"] 20 # list_names[:3] = 100 # 因为100不能被for 21 # list_names[:3] = "孙悟空" 22 print(list_names) 23 24 # 遍历:操作容器每个元素 25 # -- 方式1: for 元素 in 容器 26 # 适用性:从头到尾依次读取 27 for name in list_names: 28 print(name) 29 30 # -- 方式2:for 索引 in range(开始,结束,间隔): 31 # 适用性:不能用方式1 32 # len(list_names) - 1 是 最大索引(总数-1) 33 # -1 索引可以去到0 34 # -1 倒序 35 36 # 功能:倒序 37 for i in range(len(list_names) - 1, -1, -1): 38 print(list_names[i]) 39 40 # 功能:修改 41 for i in range(len(list_names)): 42 # 文字长度是3的修改为None 43 if len(list_names[i]) == 3: 44 list_names[i] = None
1 # 列表 -- 基础操作 2 # 删除 3 list_names = ["马伟帅", "秦世杰", "乔海瑞", "钱涛"] 4 # -- 方式1:根据元素删除 列表名.remove(元素) 5 list_names.remove("乔海瑞") 6 7 # -- 方式2:根据定位删除 del 容器名[索引或者切片] 8 del list_names[0] 9 del list_names[-2:]
深拷贝和浅拷贝
浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
Print_number[0] = 100
深拷贝:复制整个依懒的变量。
例如:
import copy
list01 = ["北京",["上海","深圳"]]
list02 = list01
list03 = list01[:]
list04 = copy.deepcopy(list01)
list04[0] = "北京04"
list04[1][1] = "深圳04"
print(list01) # 修改深拷贝后的数据,不影响拷贝前
list03[0] = "北京03"# 修改第一层,不影响拷贝前
list03[1][1] = "深圳03"# 修改第二层,影响拷贝前
print(list01) # ?
list02[0] = "北京02"# 等同于修改list01
list02[1][1] = "深圳02"
print(list02) # ?
内存图分析:

例2:

列表与字符串转换
将多个字符串拼接为一个。
result = "连接符".join(列表)
result = "".join(列表)
将一个字符串拆分为多个。
str --> list
列表 = “a-b-c-d”.split(“分隔符”)
列表 = “a-b-c-d”.split(“-”)
列表推导式
- 定义:使用简易方法,将可迭代对象转换为列表。
2.语法:
变量 = [表达式 for 变量 in 可迭代对象]
变量 = [表达式 for 变量 in 可迭代对象 if 条件]
说明:
如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。
列表推导式嵌套
- 语法:变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]
2.传统写法:
result = []
for r in ["a", "b", "c"]:
for c in ["A", "B", "C"]:
result.append(r + c)
3.推导式写法:
result = [r + c for r in list01 for c in list02]
python语言有哪些数据类型:
答:可变对象:例如,列表
特点:预留空间(动态)
不可变对象:例如,数值/str/元组...
特点:按需分配(省内存,但是不可变)
例1:
1 # list -- > str 2 将多个字符串拼接为一个。 3 # result = "连接符".join(列表) 4 5 list01 = ["a", "b", "c"] 6 result = "#".join(list01) 7 print(result) 8 9 # 需求:根据xx逻辑循环拼接字符串 10 # result = "" 11 # for number in range(10): # 0~9 12 # # 每次循环 创建新字符串 产生一个垃圾 13 # result += str(number) # "1" + "2" -> "12" 14 # print(result) 15 16 # 核心思想:用可变对象代替不可变对象 17 result = [] 18 for number in range(10): # 0~9 19 # 每次追加都在原列表基础上,没有创建新列表 20 result.append(str(number)) 21 result = "".join(result) 22 print(result)
例2:
1 # str --> list 2 # 将一个字符串拆分为多个。 3 # 列表 = “a-b-c-d”.split(“分隔符”) 4 5 result = "a-b-c-d".split("-") 6 print(result) 7 # 应用:取出一个字符串表达的多种信息 8 # "悟空,猪八戒,唐僧" 9 datas = "悟空,猪八戒,唐僧".split(",") 10 print(datas)
例3:
1 # 列表推导式 2 # 使用简易方式创建列表 3 # [操作变量 for 变量 in 可迭代对象 if 条件] 4 5 # list_result = [] 6 # for number in range(1,11): 7 # if number % 2: 8 # list_result.append(number) 9 10 list_result = [number for number in range(1, 11) 11 if number % 2] 12 print(list_result) 13 # list_result = [] 14 # for number in range(1,11): 15 # list_result.append(number ** 2) 16 list_result = [number ** 2 for number in 17 range(1, 11)]
浙公网安备 33010602011771号