目录

04.Python基础3

04.Python基础3

1.列表list

在Python中可以使用列表,对日常生活中的大量数据进行管理。 若没有列表类型,一个变量只能操作一个数据;手动为每个数据创建变量,无法动态添加数据。 (1)定义:由一系列变量组成的可变序列容器 (2)语法: 列表名 = [元素1,元素2,元素3] (3)案例: list_movie = [“八角笼中”,“封神第1部”,“消失的她”] print(list_movie)

result

[‘八角笼中’, ‘封神第1部’, ‘消失的她’]

1.1序列

(1)定义:有顺序且空间连续的容器类型 (2)基础操作 +:用于连接两个容器 *:重复生成容器元素 list_movie01 = [“八角笼中”] list_movie02 = [“封神第1部”,“消失的她”] list_movie03 = list_movie01 + list_movie02

[“八角笼中”,“封神第1部”,“消失的她”]

list_movie04 = list_movie01 * 2

[“八角笼中”,“八角笼中”]

(3)成员运算 作用:判断容器中是否存在某一元素 语法:in not in list_movie01 = [“八角笼中”] list_movie02 = [“封神第1部”,“消失的她”] print(“消失的她” in list_movie01) # False print(“消失的她” in list_movie02) # True print(“消失的她” not in list_movie02) # False (4)常用函数 len函数:计算容器中元素的数量 max函数:计算容器中最大的元素 min函数:计算容器中最小的元素 sum函数:对容器中元素求和计算 list_num=[1,11,23,48] print(len(list_num)) # 4 print(sum(list_num)) # 83 print(min(list_num)) # 1 print(max(list_num)) # 48

1.2基础操作

1.2.1添加元素

列表名.append(元素) 列表.insert(索引,元素) list_city=[“beijing”,“shanghai”,“guangzhou”] print(list_city)

在末尾新增元素

list_city.append(“shenzhen”) print(list_city)

指定位置添加元素

list_city.insert(1,“重庆”) #添加元素时按照列表索引添加从0开始,1就是添加到索引为1的位置 print(list_city)

result

[‘beijing’, ‘shanghai’, ‘guangzhou’] [‘beijing’, ‘shanghai’, ‘guangzhou’, ‘shenzhen’] [‘beijing’, ‘重庆’, ‘shanghai’, ‘guangzhou’, ‘shenzhen’]

1.2.2定位元素

https://i-blog.csdnimg.cn/direct/0f36c2d796fd43589e4d0adcd1d040be.png 列表名[索引] = 元素 变量 = 列表名[索引] 变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表 列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表 list_movie = [“八角笼中”,“封神第1部”,“消失的她”,“哪吒”,“唐探”] list_movie[0] = “满江红” print(list_movie[0]) # 满江红 print(list_movie[:2]) # [‘满江红’, ‘封神第1部’] print(list_movie[1:]) # [‘封神第1部’, ‘消失的她’, ‘哪吒’, ‘唐探’] print(list_movie[1:4:2]) # [‘封神第1部’, ‘哪吒’]

1.2.3删除元素

列表名.remove(元素) del 列表名[索引或切片] list_movie = [“八角笼中”,“封神第1部”,“消失的她”,“哪吒”,“唐探”] list_movie.remove(“唐探”) print(list_movie) # [‘八角笼中’, ‘封神第1部’, ‘消失的她’, ‘哪吒’] del list_movie[1] print(list_movie) # [‘八角笼中’, ‘消失的她’, ‘哪吒’]

1.2.4遍历

(1)从头到尾读取 for 变量名 in 列表名: 变量名是元素 list_movie = [“八角笼中”,“封神第1部”,“消失的她”,“哪吒”,“唐探”] for l in list_movie: print(l) (2)从头到尾修改: for 索引名 in range(len(列表名)): 列表名[索引名]是元素 num_lsit=[10001,238999,15489,50001] for i in range(len(num_lsit)): if num_lsit[i] > 50000: num_lsit[i]= 8888 print(num_lsit) # [10001, 8888, 15489, 8888] 练习 “““打印新增列表小于10的元素 现有列表所有元素累加2"”” list_num=[2,4,6,8,10,12,14] for i in range(len(list_num)): if list_num[i] < 10: print(list_num[i]) for i in range(len(list_num)): list_num[i]+=2 print(list_num)

1.2.5列表拷贝

为什么需要拷贝 (1)避免数据意外修改 有时候需要将可变数据传递给函数,并且希望函数对这个可变数据的操作不影响原始数据。 (2)保存数据原始快照 在某些情况下,需要创建一个相同状态的数据副本,以便之后可以对比或回滚到先前的状态。 深拷贝 深拷贝复制所有层的数据,拷贝后的数据完全独立。 import copy list_movie = [“八角笼中”,[“消失的她”,“碟中谍7”]] list_new = copy.deepcopy(list_movie) list_new[0] = “满江红” list_new[1][1] = “流浪地球” print(list_movie) # [“八角笼中”,[“消失的她”,“碟中谍7”]] print(list_new) # [‘满江红’, [‘消失的她’, ‘流浪地球’]] 浅拷贝 浅拷贝复制第一层的数据,共享深层的数据。 import copy list_lag=[“java”,“python”,“php”,[“c”,“c++”]] list_lag_new2=list_lag[:] print(list_lag) # [‘java’, ‘python’, ‘php’, [‘c’, ‘c++’]] print(list_lag_new2) # [‘java’, ‘python’, ‘php’, [‘c’, ‘c++’]] list_lag_new2[1]=“js” list_lag_new2[3][0]=“python3” print(list_lag) # [‘java’, ‘python’, ‘php’, [‘python3’, ‘c++’]] print(list_lag_new2) # [‘java’, ‘js’, ‘php’, [‘python3’, ‘c++’]] “““根据以上输出的结果可知: 浅拷贝:创建一个新的列表对象,并把原始列表中的引用复制到新列表中 拷贝后的数据第1层分为两份,从第二层开始即深层数据原列表和新列表共享1份 也就是说原列表深层的数据会随新列表的修改而修改,第一层数据不会修改 再看下面的一个例子会更加清晰 "”” list_lag=[“java”,“python”,“php”,[“c”,[“linux”,“win”,“mac”]]] list_lag_new2=list_lag[:] print(list_lag) print(list_lag_new2) list_lag_new2[0]=“js” list_lag_new2[3][1][2]=“unix” print(list_lag) print(list_lag_new2) 深浅拷贝对比 深、浅拷贝是复制数据的两种方式。 深拷贝复制所有层的数据,拷贝后的数据完全独立。 优点是修改数据时互不影响,缺点是占用内存较大。 浅拷贝复制第一层的数据,共享深层的数据。 优点是占用内存较少,缺点是修改深层数据互相影响。 当需要拷贝的数据具有深层数据,建议使用深拷贝,否则使用浅拷贝。

1.2.5列表推导式

(1)需求:将大于60的元素存入新列表 (2)定义:通过简单的语法将可迭代对象转换为新列表 (3)作用:简化代码,避免了传统循环结构的繁琐,提高代码的可读性 (4)语法: 新列表 = [表达式 for 变量in 可迭代对象] 新列表 = [表达式 for 变量in 可迭代对象 if 条件]

传统代码

list_number = [66,25,72,86,57] list_new = [] for item in list_number: if item > 60: list_new.append(item) print(list_new) # [66,72,86]

列表推导式

新列表=[表达式 for 变量 in 可迭代对象]

新列表=「表达式 for变量 in 可迭代对象 if 条件]

表达式:针对于 可迭代对象的操作(计算)

变量: 每一个元素并

可迭代对象:列表 元组等

如果有if 过滤元素并

list_new = [item for item in list_number if item > 60] print(list_new) # [66,72,86] (5)适用性 使用条件:根据可迭代对象、构建新列表、过程够简单 练习

生成10–30之间能被3或者5整除的数字

list_new=[item for item in range(10,30,1) if item % 3 ==0 or item % 5 == 0] print(list_new)

生成5 – 20之间的数字平方

list_new=[ item ** 2 for item in range(5,20,1) ] print(list_new)