04.Python基础3

devtools/2025/3/16 20:40:36/

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) # Falseprint("消失的她" in list_movie02) # Trueprint("消失的她" not in list_movie02) # False

(4)常用函数

len函数:计算容器中元素的数量

max函数:计算容器中最大的元素

min函数:计算容器中最小的元素

sum函数:对容器中元素求和计算

list_num=[1,11,23,48]print(len(list_num)) # 4print(sum(list_num)) # 83print(min(list_num)) # 1print(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定位元素

列表名[索引] = 元素

变量 = 列表名[索引]

变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表

列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表

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 copylist_movie = ["八角笼中",["消失的她","碟中谍7"]]
list_new = copy.deepcopy(list_movie)
list_new[0] = "满江红"
list_new[1][1] = "流浪地球"
print(list_movie) # ["八角笼中",["消失的她","碟中谍7"]]
print(list_new)   # ['满江红', ['消失的她', '流浪地球']]

浅拷贝

浅拷贝复制第一层的数据,共享深层的数据。

import copylist_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)


http://www.ppmy.cn/devtools/167637.html

相关文章

python脚本实现服务器内存和cpu使用监控,并记录日志,可以设置阈值和采样频率

Python 脚本&#xff0c;实现以下功能&#xff1a; 按日期自动生成日志文件&#xff08;例如 cpu_mem_20231001.csv&#xff09;当 CPU 或内存超过阈值时触发记录独立记录报警事件&#xff08;保存到 alert.log&#xff09;支持自定义阈值和监控间隔 脚本代码 import psutil …

C++27--智能指针

目录 1.为什么需要智能指针 2.内存泄漏 2.1什么是内存泄漏&#xff0c;内存泄漏的危害 2.2内存泄漏分类(了解) 2.3如何检测内存泄漏(了解) 2.4如何避免内存泄漏 3.智能指针的使用及原理 3.1RAII 3.2智能指针的原理 3.3std::auto _ptr 3.4std::unique_ptr 3.5std::sh…

discuz门户文章允许游客评论

discuz开启游客评论 1、进入后台&#xff0c;用户--用户组--系统用户组--游客--编辑 2、论坛相关 设置未允许发表回复 3、门户相关--文章评论字数(设置此用户组发表文章评论字数限制&#xff0c;设置为0将禁止此用户组发表评论) 4、验证游客回复 测试站 http://jinzhu.zhaowo.…

Next.js项目MindAI教程 - 第四章:用户认证系统

1. NextAuth.js 集成 1.1 安装依赖 npm install next-auth bcryptjs npm install types/bcryptjs --save-dev npm install next-auth bcryptjs npm install types/bcryptjs --save-dev 1.2 配置NextAuth // src/app/api/auth/[...nextauth]/route.ts import NextAuth fro…

优化Go错误码管理:构建清晰、优雅的HTTP和gRPC错误码规范

在系统开发过程中&#xff0c;如何优雅地管理错误信息一直是个棘手问题。传统的错误处理方式往往存在不统一、难以维护等缺点。而 errcode 模块通过对错误码进行规范化管理&#xff0c;为系统级和业务级错误提供了统一的编码标准。本文将带您深入了解 errcode 的设计原理、错误…

Windows的tftp udp 69端口被占用,通过netstat查询

要用到tftp server传输文件&#xff0c;启动3cdeamon工具时报错&#xff0c;端口被占用 tftp端口为udp 69 查询方法 C:\Users\funny>netstat -ano | findstr :69UDP 0.0.0.0:69 *:* 7664UDP [::]:69 …

运行Clip多模态模型报错:OSError: Can‘t load tokenizer for ‘bert-base-chinese‘

目录 1.OSError 2.解决方法 3.运行存在问题 1.OSError加载模型文件出现 OSError: Can’t load tokenizer for ‘bert-base-chinese’. If you were trying to load it from ‘https://huggingface.co/models’, make sure you don’t have a local directory with the same…

python速通小笔记-------1.容器

1.字符串的标识 字符串需要用“”标识。 与c不同&#xff0c;python 写变量时 不需要标明数据类型每一行最后不需要加&#xff1b; 2.print函数的使用 与c中的printf函数一致 3.运算符 4.字符串str操作 1. 实现字符串拼接 2.% 实现字符串初始化 %s占位会把变量强制转变为…