数据分析2

news2025/5/15 0:21:32

五、文件

CSV

Comma-Separated Value,逗号分割值。CSV文件以纯文本形式存储表格数据(数字和文本)。

CSV记录间以某种换行符分隔,每条记录由字段组成,字段间以其他字符或字符串分割,最常用逗号或制表符。

CSV文件第一行为表头,数据之间用逗号分割。

读取

import csv
import sys
input_file = 'D:/pythoncode/aiSelf/supplier_data.csv'
output_file = 'D:/pythoncode/aiSelf/supplier_data2.csv'
with open(input_file, 'r', newline='') as filereader:
    with open(output_file, 'w', newline='') as filewriter:
        header = filereader.readline()
        header = header.strip()
        header_list = header.split(',')
        print(header_list)
        filewriter.write(','.join(map(str, header_list))+'\n')
        for row in filereader:
            row = row.strip()
            row_list = row.split(',')
            print(row_list)
            filewriter.write(','.join(map(str, row_list))+'\n')

筛选特定行

import csv
import sys
input_file = 'D:/pythoncode/aiSelf/supplier_data.csv'
output_file = 'D:/pythoncode/aiSelf/supplier_data2.csv'
with open(input_file, 'r', newline='') as csv_in_file:
    with open(output_file, 'w', newline='') as csv_out_file:
        filereader = csv.reader(csv_in_file)
        filewriter = csv.writer(csv_out_file)
        header = next(filereader)
        filewriter.writerow(header)
        for row_list in filereader:
            year = int(str(row_list[0]).strip())
            cost = int(str(row_list[-1]).strip('$').replace(',',''))
            if year > 2020 and cost < 5000:
                filewriter.writerow(row_list)

筛选特定行

import csv
import sys
import re
input_file = 'D:/pythoncode/aiSelf/supplier_data.csv'
output_file = 'D:/pythoncode/aiSelf/supplier_data3.csv'
pattern = re.compile(r'(a2.*)')
with open(input_file, 'r', newline='', encoding='utf-8') as csv_in_file:
    with open(output_file, 'w', newline='', encoding='utf-8') as csv_out_file:
        filereader = csv.reader(csv_in_file)
        filewriter = csv.writer(csv_out_file)
        header = next(filereader)
        filewriter.writerow(header)
        for row_list in filereader:
            invoice_number = row_list[2]
            if pattern.search(invoice_number):
                filewriter.writerow(row_list)

统计文件数与文件中行列数

import csv
import glob
import os
import string
import sys
pa = 'D:/pythoncode/aiSelf'
file_counter = 0
for input_file in glob.glob(os.path.join(pa,'p11*')):
    row_counter = 1
    with open(input_file,'r',newline='',encoding='utf-8') as csvfile:
        filereader = csv.reader(csvfile)
        header = next(filereader)
        for row in filereader:
            row_counter += 1
    print('{0:s}:\t{1:d} rows \t {2:d} columns'.format(\
        os.path.basename(input_file),row_counter,len(header)))
    file_counter += 1
print('文件数量:{0:d}'.format(file_counter))

CSV文件数据统计

import csv
import glob
import os
import string
import sys
input_path = 'D:/pythoncode/aiSelf'
output_path = 'D:/pythoncode/aiSelf/output.txt'
output_header_list = ['file_name','total_sales','average_sales']
csv_out_file = open(output_path, 'a', newline='')
filewriter = csv.writer(csv_out_file)
filewriter.writerow(output_header_list)
for input_file in glob.glob(os.path.join(input_path, 'instruments*.csv')):
    with open(input_file, 'r', newline='', encoding='utf-8') as csv_in_file:
        filereader = csv.reader(csv_in_file)
        output_list = []
        output_list.append(os.path.basename(input_file))
        header = next(filereader)
        total_sales = 0.0
        number_of_sales = 0.0
        for row in filereader:
            sale_amount = row[4]
            total_sales += float(str(sale_amount).strip('$').replace(',',''))
            number_of_sales += 1.0
        average_sales = '{0:.2f}'.format(total_sales/number_of_sales)
        output_list.append(total_sales)
        output_list.append(average_sales)
        filewriter.writerow(output_list)
csv_out_file.close()

Excel文件

Python处理Excel需导入xlrd和xlwt两个扩展包。

查看工作簿信息

import sys
from xlrd import open_workbook
input_file = 'D:/pythoncode/aiSelf/instruments_1.xls'
workbook = open_workbook(input_file)
print('工作簿数量:',workbook.nsheets)
for worksheet in workbook.sheets():
    print('工作簿名字:', worksheet.name, '\tRows:', worksheet.nrows, '\tColumns:', worksheet.ncols)

筛选满足一定条件的行

import sys
from datetime import date
from xlrd import open_workbook, xldate_as_tuple
from xlwt import Workbook
input_file = 'D:/pythoncode/aiSelf/instruments_2.xls'
output_file = 'D:/pythoncode/aiSelf/p128shujufenxi356.xls'
output_workbook = Workbook()
output_worksheet = output_workbook.add_sheet('Sheet1')
sale_amount_column_index = 3
with open_workbook(input_file) as workbook:
    worksheet = workbook.sheet_by_name('instruments_2')
    data = []
    header = worksheet.row_values(0)
    data.append(header)
    for row_index in range(1, worksheet.nrows):
        row_list = []
        sale_amount = worksheet.cell_value(row_index,sale_amount_column_index)
        if sale_amount > 1500.0 and sale_amount < 4500.0:
            for column_index in range(worksheet.ncols):
                cell_value = worksheet.cell_value(row_index,column_index)
                cell_type = worksheet.cell_type(row_index,column_index)
                if cell_type == 3:
                    date_cell = xldate_as_tuple(cell_value, workbook.datemode)
                    date_cell = date(*date_cell[0:3]).strftime('%Y/%m/%d')
                    row_list.append(date_cell)
                else:
                    row_list.append(cell_value)
        if row_list:
            data.append(row_list)
    for list_index, output_list in enumerate(data):
        for element_index, element in enumerate(output_list):
            output_worksheet.write(list_index, element_index, element)
output_workbook.save(output_file)

一组工作表的处理

import sys
from datetime import date
from xlrd import open_workbook, xldate_as_tuple
from xlwt import Workbook
input_file = 'D:/pythoncode/aiSelf/instruments_2.xls'
output_file = 'D:/pythoncode/aiSelf/p129shujufenxi357.xls'
output_workbook = Workbook()
output_worksheet = output_workbook.add_sheet('Sheet1')
my_sheets = [0,1]
threshold = 3000.0
sales_column_index = 3
first_worksheet = True
with open_workbook(input_file) as workbook:
    data = []
    for sheet_index in range(workbook.nsheets):
        if sheet_index in my_sheets:
            worksheet = workbook.sheet_by_index(sheet_index)
            if first_worksheet:
                header_row = worksheet.row_values(0)
                data.append(header_row)
                first_worksheet = False
            for row_index in range(1,worksheet.nrows):
                row_list = []
                sale_amount = worksheet.cell_value(row_index, sales_column_index)
                if sale_amount > threshold:
                    for column_index in range(worksheet.ncols):
                        cell_value = worksheet.cell_value(row_index, column_index)
                        cell_type = worksheet.cell_type(row_index, column_index)
                        if cell_type == 3:
                            date_cell = xldate_as_tuple(cell_value, workbook.datemode)
                            date_cell = date(*date_cell[0:3].strftime('%Y%m%d'))
                            row_list.append(date_cell)
                        else:
                            row_list.append(cell_value)
                if row_list:
                    data.append(row_list)
    for list_index, output_list in enumerate(data):
        for element_index, element in enumerate(output_list):
            output_worksheet.write(list_index, element_index, element)
output_workbook.save(output_file)

多个工作簿的处理

六、Python标准库

数据处理的Numpy、Pandas和数据可视化的Matplotlib详见数据分析1。

datetime模块

常用类说明
date日期类。包括year、month、day属性
time时间类。包括hour、minute、second、microsecond属性
datetime时间日期类。
timedelta时间间隔类。表示两个date、time、datetime实例之间的时间间隔
tzinfo时区类。

from datetime import date

date类

date类包含对日期数据进行操作和格式化的方法。

格式化日期
方法功能
isoformat()返回符合ISO8601标准的YYYY-MM-DD
isocalender()返回包括三个值的元组,年份year,本年的第几周week number,weekday周一为1,周日为7
isoweekday()返回ISO标准日期所在的星期几,周一为1,周日为7
weekday()返回指定日期星期几,周一为0,周日为6
日期比较方法
方法功能
x.__eq__(y)x是否等于y
x.__lt__(y)x是否小于y
x.__le__(y)x是否小于等于y
x.__gt__(y)x是否大于y
x.__ge__(y)x是否大于等于y
x.__ne__(y)x是否不等于y
 计算日期差
方法功能
x.__sub__(y)计算x和y两个日期的差
x.__rsub__(y)计算y和x两个日期的差
其他
方法功能
today()获取当前日期
fromtimestamp()将时间戳转换为日期

 datetime类

可以看作date类和time类的综合。它有一些专有方法。

方法功能
now()返回当前日期和时间
date()返回当前日期和时间的日期部分
time()返回当前日期和时间的时间部分
combine(date对象,time对象)将date对象和time对象合并为datetime对象
时间转化与格式设置

时间对象转化为字符串用isoformat()方法。

字符串转化为时间对象用strptime()方法。 

time对象

格式控制字符说明
%H24小时制小时数0-23
%I12小时制小时数01-12
%M分钟数00-59
%S秒数00-59
%p设置显示AM上午,PM下午

date对象和datetime对象 

格式控制字符说明
%Y四位数年份0001-9999
%y两位数年份01-99
%m月份01-12
%d日期01-31
from datetime import date
date1 = date(2025,5,1)
print(date1)
print(date1.year)
print(date1.month)
print(date1.day)
from datetime import date
from datetime import datetime
date2 = date.today()
print(date2.strftime("%Y-%m-%d"))
datetime3 = datetime.now()
print(datetime3.strftime("%Y-%m-%d %H:%M:%S %p"))

math模块

数学常量:

math.pi3.14159..
math.e2.718..
math.inf浮点正无穷大
math.nan浮点非数字NaN值

数学函数:

import math
print(math.ceil(3.5))
print(math.floor(3.5))
print(math.trunc(3.5))
print(math.log(math.e))

random模块

import random
print('输出各种随机数')
print(random.random())
print(random.uniform(10,100))
print(random.randint(10,100))
print(random.randrange(10,100))
print(random.randrange(4,100,4))
print('返回序列中随机元素')
print(random.choice('wolf is very handsome'))
print(random.choice(['wolf', 'is', 'very', 'handsome']))
print(random.choice(('wolf', 'is', 'very', 'handsome')))
print('改变List中元素顺序')
list = ['wolf', 'is', 'very', 'handsome']
random.shuffle(list)
print(list)
print('随机种子')
random.seed(1)
print(random.random())
print(random.uniform(10,100))
print(random.randint(10,100))
print(random.randrange(10,100))
print(random.randrange(4,100,4))

如果指定种子,会使每次随机的结果相同 

os模块

os.name判断正在使用的平台
os.environ查看系统环境变量
os.listdir()指定所有目录中所有的文件名称和目录名称
os.remove()删除指定文件
os.rmdir()删除指定目录
os.mkdir()创建目录
os.path.isdir()判断指定对象是否为目录
os.path.isfile()判断指定对象是否为文件
import os
if os.name == 'nt':
    print('当前使用windows')
if os.name == 'posix':
    print('当前使用Linux')

print('系统使用环境变量为', os.environ)
print(os.environ['HOMEPATH'])

path = '/pythoncode/'
for i in os.listdir(path):
    print(i)

os.remove('D:/pythoncode/analyse/text804.txt')
print('文件删除完毕')

# os.removedirs('文件名')
# os.mkdir('一层的路径')
# os.path.isdir()用来判定对象是否为目录
# os.path.isfile()用来判定指定对象是否为文件

七、正则表达式

元字符

元字符是预先定义好的特殊字符,是用来描述其他字符的。

主要元字符

\转义符,表示转义
.表示任意一个字符
+表示重复1次或多次
*表示重复0次或多次
?表示重复0次或1次
|选择符号,或
{}定义量词
[]定义字符类
()定义分组
^表示取反,或匹配一行的开始
$匹配一行的结束

预定义字符

用于转义

\n匹配换行符
\r匹配回车符
\f匹配一个换页符
\t匹配一个水平制表符
\v匹配一个垂直制表符
\s匹配一个空格符,等价于[\t\n\r\f\v]
\S匹配一个非空格符,等价于[^\s]
\d匹配一个数字字符,等价于[0-9]
\D匹配一个非数字字符,等价于[^0-9]
\b匹配单词的开始或结束,单词的分布符为空格、标点符号或换行
\w匹配任意语言的字符、数字或下划线等内容。若正则表达式标志设置为ASCII,则只匹配[a-zA-Z0-9]
\W等价于[^\w]

例如匹配一个8位数字的电话号码,可以使用

\d\d\d\d\d\d\d\d

 该方法还是比较繁琐的,可以使用下面这个正则表达式代替。

\d{8}

标记开始与结束

$结束,^开始

\w+@163.com$                    以163.com结尾

^\w+@163.com                    以163.com开头

匹配一组字符

正则表达式中可以用字符类定义一组字符,其中任意一个字符出现在输入字符串中即匹配成功。需注意,每次只能匹配一个字符。

定义一组字符

需要中括号[]基本元字符

想要匹配python和Python

[pP]ython

对一组字符取反

^取反

想要匹配不是阿拉伯数字

[^1234567890]

使用区间简化一组字符的定义

-

想要匹配不是阿拉伯数字

[^0-9]

所有英文字母和数字

[A-Za-z0-9]

下面这个正则表达式是0-3和6-8,不是0-36

[0-36-8]

使用量词多次匹配

元字符只能匹配显示一次字符或字符串,想要匹配多次字符或字符串,应使用量词

常用量词

?出现0次或1次
*出现0次或多次
+出现1次或多次
{n}出现n次
{n,m}至少出现n次,但不超过m次
{n,}至少出现n次

匹配八位数字的电话号码,不要再用8个\d了

\d{8}

颜色有color和colour

colou?r

贪婪和非贪婪匹配

关于重复的操作,需要注意正则表达式默认使用贪婪匹配方式。

贪婪匹配是只要符合条件就会尽可能多的匹配。

转换成非贪婪匹配只要在量词后加上?

\d{5,9}

\d{5,9}?

 分组

在前面的例子中,量词只能重复显示一个字符,如果想让一个字符串作为整体使用量词对其进行重复匹配,可以使用圆括号(),分组。

(123){3}匹配123123123

123{3}只会对字符3重复匹配

使用re模块处理正则表达式

Python的re模块具有正则表达式的匹配功能。使用re模块前先导入

import re

Python正则表达式的语法

Python中的正则表达式是作为模式字符串使用的,也就是两侧加单引号。

例如[^a-zA-Z]应写为

'[^a-zA-Z]'

部分特殊含义字母应使用反斜杠\

或在模式字符串前加上大小写字母R或r,表示原生字符串

例如\bd\w*\b应写为

r'\bd\w*\b'
# 或
'\\bd\w*\\b'

匹配字符串

re模块中的match()方法、search()方法、findall()方法用于字符串匹配

match()方法从字符串开始位置匹配,在开始位置匹配成功返回Match对象,否则返回None。

re.match(pattern模式字符串, string要匹配的字符串, [flags]可选可不选标志位用于控制匹配方式如是否区分字母大小写等)

import re
mystr = ['streetwolf', 'silverwolf', 'Streetsheep', 'streetcat', 'StreetMouse', 'streetfish']
p = r'street\w+'
for i in range(len(mystr)):
    m = re.match(p, mystr[i], re.I)
    if m:
        print(mystr[i], '开始位置', m.start(), ',结束位置', m.end(), ',跨度', m.span(), ',匹配内容', m.string)
    else:
        print(mystr[i], '不匹配')

with open('telephonenumber.txt', 'r', encoding='utf-8') as f:
    lst = f.readlines()
number = 0

for i in range(len(lst)):
    p = re.match(r'17[01]\d{8}|000',lst[i])
    if p:
        number = number + 1
print(number)

search()方法可以在整个字符串中查找,并返回第一个匹配内容,若找到一个则匹配对象,否则匹配None。

re.search(pattern模式字符串, string要匹配的字符串, [flags]可选可不选标志位用于控制匹配方式如是否区分字母大小写等)

findall()方法用于在整个字符串中搜索所有符合正则表达式的字符串,匹配成功以列表形式返回,否则返回空列表。

re.findall(pattern模式字符串, string要匹配的字符串, [flags]可选可不选标志位用于控制匹配方式如是否区分字母大小写等)

替换字符串

sub()方法实现字符串替换

re.sub(pattern模式字符串,repl替换的字符串,string原始字符串,count模式匹配后替换的最大次数默认0替换所有匹配,flags表示位控制匹配方式)

分割字符串

split()方法分割字符串,返回列表,与字符串对象的split()方法类似

re.split(pattern,string,[maxsplit]最大拆分次数,[flags])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2375702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战项目5(08)

目录 任务场景一 【r1配置】 【r2配置】 【r3配置】 ​​​​​​​任务场景二 【r1配置】 【r2配置】 ​​​​​​​任务场景一 按照下图完成网络拓扑搭建和配置 任务要求&#xff1a; 通过在路由器R1、R2和R3上配置静态路由&#xff0c;实现网络中各终端PC能够正常…

.NET MAUI 基础知识

文章目录 什么是 .NET MAUI&#xff1f;MAUI的核心特点与Xamarin.Forms的区别 开发环境搭建安装Visual Studio 2022安装必要组件配置Android开发环境配置iOS开发环境验证安装 创建第一个MAUI应用创建新项目MAUI项目结构解析理解关键文件运行应用程序简单修改示例使用热重载 MAU…

佰力博科技与您探讨表面电阻的测试方法及应用领域

表面电阻测试是一种用于测量材料表面电阻值的技术&#xff0c;广泛应用于评估材料的导电性能、静电防护性能以及绝缘性能。 1、表面电阻的测试测试方法&#xff1a; 表面电阻测试通常采用平行电极法、同心圆电极法和四探针法等方法进行。其中&#xff0c;平行电极法通过在试样…

鹅厂面试数学题

题目 一个圆上随机取三个点&#xff0c;求这三个点构成锐角三角形的概率。 解答 根据圆周角定理&#xff0c;此题目等价为&#xff1a;一条线段长度为1的线段随机取两个点分成三段&#xff0c;任意一段长度均不大于1/2的概率。记前两段的长度为&#xff0c;则第三段的长度为…

java基础-package关键字、MVC、import关键字

1.package关键字&#xff1a; &#xff08;1&#xff09;为了更好管理类&#xff0c;提供包的概念 &#xff08;2&#xff09;声明类或接口所属的包&#xff0c;声明在源文件首行 &#xff08;3&#xff09;包&#xff0c;属于标识符&#xff0c;用小写字母表示 &#xff0…

[6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

【PmHub后端篇】PmHub中基于自定义注解和AOP的服务接口鉴权与内部认证实现

1 引言 在现代软件开发中&#xff0c;尤其是在微服务架构下&#xff0c;服务接口的鉴权和内部认证是保障系统安全的重要环节。本文将详细介绍PmHub中如何利用自定义注解和AOP&#xff08;面向切面编程&#xff09;实现服务接口的鉴权和内部认证&#xff0c;所涉及的技术知识点…

多模态AI新纪元:Vertex AI Gemini与Spring AI深度集成实践

企业级AI集成进阶&#xff1a;Spring AI与Vertex AI Gemini的配置与调优实战 一、前沿技术&#xff1a;多模态模型的企业级配置范式 在生成式AI技术快速迭代的当下&#xff0c;企业级应用对模型配置的精细化需求日益增长。Vertex AI Gemini作为Google推出的多模态大模型&…

开源AI数字人分身克隆小程序源码系统深度剖析:从搭建到应用

在人工智能与小程序生态深度融合的当下&#xff0c;开源 AI 数字人分身克隆小程序源码成为开发者的热门工具。从搭建基础环境到实现实际应用&#xff0c;这一过程涉及多项技术与复杂流程。本文将带您深入剖析开源 AI 数字人分身克隆小程序源码&#xff0c;揭开其从搭建到应用的…

ETL背景介绍_1:数据孤岛仓库的介绍

1 ETL介绍 1.1 数据孤岛 随着企业内客户数据大量的涌现&#xff0c;单个数据库已不再足够。为了储存这些数据&#xff0c;公司通常会建立多个业务部门组织的数据库来保存数据。比如&#xff0c;随着数据量的增长&#xff0c;公司通常可能会构建数十个独立运行的业务数据库&am…

Linux系统:虚拟文件系统与文件缓冲区(语言级内核级)

本节重点 初步理解一切皆文件理解文件缓冲区的分类用户级文件缓冲区与内核级文件缓冲区用户级文件缓冲区的刷新机制两级缓冲区的分层协作 一、虚拟文件系统 1.1 理解“一切皆文件” 我们都知道操作系统访问不同的外部设备&#xff08;显示器、磁盘、键盘、鼠标、网卡&#…

智能体的典型应用:自动驾驶、智能客服、智能制造、游戏AI与数字人技术

本文为《React Agent&#xff1a;从零开始构建 AI 智能体》专栏系列文章。 专栏地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。项目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代码示​例与实战源&#xff09;。完整介绍…

国联股份卫多多与七腾机器人签署战略合作协议

5月13日&#xff0c;七腾机器人有限公司&#xff08;以下简称“七腾机器人”&#xff09;市场部总经理孙永刚、销售经理吕娟一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;…

WebGL 开发的前沿探索:开启 3D 网页的新时代

你是否曾好奇&#xff0c;为何如今网页上能呈现出如同游戏般逼真的 3D 场景&#xff1f;这一切都要归功于 WebGL。它看似神秘&#xff0c;却悄然改变着我们浏览网页的体验。以往&#xff0c;网页内容大多局限于二维平面&#xff0c;可 WebGL 打破了这一限制。它究竟凭借什么&am…

激光雷达定位算法在FPGA中的实现——section3 Matlab实现和校验

1、校验section2的计算方法是否正确 以section1里面的图示 举个例子: 1.1 手动计算

AI+可视化:数据呈现的未来形态

当AI生成的图表开始自动“美化”数据&#xff0c;当动态可视化报告能像人类一样“讲故事”&#xff0c;当你的眼球运动直接决定数据呈现方式——数据可视化的未来形态&#xff0c;正在撕裂传统认知。某车企用AI生成的3D可视化方案&#xff0c;让设计师集体失业&#xff1b;某医…

[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…

【网络入侵检测】基于源码分析Suricata的IP分片重组

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全&#xff0c;欢迎关注与评论。 目录 目录 1.概要 2. 配置信息 2.1 名词介绍 2.2 defrag 配置 3. 代码实现 3.1 配置解析 3.1.1 defrag配置 3.1.2 主机系统策略 3.2 分片重组模块 3.2.1…

LVGL简易计算器实战

文章目录 &#x1f4c1; 文件结构建议&#x1f539; eval.h 表达式求值头文件&#x1f539; eval.c 表达式求值实现文件&#xff08;带详细注释&#xff09;&#x1f539; ui.h 界面头文件&#x1f539; ui.c 界面实现文件&#x1f539; main.c 主函数入口✅ 总结 项目效果&…

代码随想录算法训练营第60期第三十四天打卡

大家好&#xff0c;我们今天的内容依旧是贪心算法&#xff0c;我们上次的题目主要是围绕多维问题&#xff0c;那种时候我们需要分开讨论&#xff0c;不要一起并发进行很容易顾此失彼&#xff0c;那么我们今天的问题主要是重叠区间问题&#xff0c;又是一种全新的贪心算法思想&a…