Python从0到100(三十三):xpath和lxml类库

news2024/11/18 3:33:25

在这里插入图片描述

1. 为什么要学习xpath和lxml

lxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息

2. 什么是xpath

XPath,全称为XML Path Language,是一种用于在XML文档中进行导航和数据提取的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历

W3School官方文档:http://www.w3school.com.cn/xpath/index.asp

3. 认识xml

知识点:

  • html和xml的区别
  • xml中各个元素的的关系和属性

3.1 html和xml的区别

HTML(HyperText Markup Language)和XML(eXtensible Markup Language)都是用于描述数据的标记语言,但它们之间存在一些关键的区别:

  1. 目的

    • HTML:设计用来创建和展示网页内容。
    • XML:设计用来存储和传输数据,不定义数据的显示方式。
  2. 标准性

    • HTML:有固定的标签集,如<p><div><a>等。
    • XML:允许用户定义自己的标签,提供了极大的灵活性。
  3. 结构性

    • HTML:结构相对宽松,某些标签可以不闭合或不严格遵守嵌套规则。
    • XML:非常严格,所有标签必须正确闭合,并且必须正确嵌套。
  4. 数据表示

    • HTML:主要用于展示数据,不关注数据的结构和语义。
    • XML:强调数据的结构和语义,适合数据的存储和交换。
  5. 样式和行为

    • HTML:可以内嵌CSS和JavaScript来控制样式和行为。
    • XML:不包含样式和行为的定义,通常需要与XSL(eXtensible Stylesheet Language)或XSLT(eXtensible Stylesheet Language Transformations)结合使用来定义样式和转换数据。
  6. 错误容忍度

    • HTML:浏览器对HTML的错误相对宽容,即使某些标签使用不当,页面仍可能显示。
    • XML:对错误非常敏感,如果XML文档格式有误,通常无法被正确解析。
  7. 文档类型

    • HTML:通常不需要文档类型声明(DOCTYPE)或可以有简化的声明。
    • XML:每个XML文档都需要一个文档类型声明来指示使用的是XML。
  8. 应用范围

    • HTML:主要用于网页设计和开发。
    • XML:应用范围广泛,包括配置文件、数据交换格式、RSS feeds等。
  9. 命名空间

    • HTML:不支持命名空间。
    • XML:支持命名空间,有助于解决不同XML文档中标签名称冲突的问题。
  10. 扩展性

    • HTML:扩展性有限,受限于其固定的标签集。
    • XML:高度可扩展,用户可以根据需要创建新的标签和属性。

尽管HTML和XML在某些方面相似,但它们的设计目标和使用方式有着根本的不同。HTML专注于网页内容的展示,而XML则是一种更为通用的数据交换格式。

3.2 xml的树结构

<bookstore>
<book category="COOKING">
  <title lang="en">Everyday Italian</title> 
  <author>Giada De Laurentiis</author> 
  <year>2005</year> 
  <price>30.00</price> 
</book>
<book category="CHILDREN">
  <title lang="en">Harry Potter</title> 
  <author>J K. Rowling</author> 
  <year>2005</year> 
  <price>29.99</price> 
</book>
<book category="WEB">
  <title lang="en">Learning XML</title> 
  <author>Erik T. Ray</author> 
  <year>2003</year> 
  <price>39.95</price> 
</book>
</bookstore>

4. xpath的节点关系

知识点:

  • 认识xpath中的节点
  • 了解xpath中节点之间的关系

4.1 xpath中的节点是什么

每个XML的标签我们都称之为节点,其中最顶层的节点称为根节点。

XPath(XML Path Language)是一种用于在XML文档中进行导航的语言,它允许你选择节点或节点集,并对它们进行操作。在XPath中,节点是文档结构的基本单元,包括以下几种类型:

  1. 元素节点:XML文档中的标签,如<book><title>等。
  2. 属性节点:元素的属性,如<book lang="English">中的lang="English"
  3. 文本节点:元素内的文本内容,如<name>John Doe</name>中的John Doe
  4. 命名空间节点:XML文档中的命名空间声明。
  5. 处理指令节点:XML文档中的处理指令,如<?xml-stylesheet type="text/xsl" href="style.xsl"?>
  6. 注释节点:XML文档中的注释部分。
  7. 根节点:XML文档的根元素,它是所有其他节点的父节点。

4.2 xpath中节点的关系

在XPath中,节点之间的关系可以描述如下:

  • 父节点:一个节点的直接上级节点。例如,在<parent><child/></parent>中,<parent><child>的父节点。
  • 子节点:一个节点的直接下级节点。在上述例子中,<child><parent>的子节点。
  • 兄弟节点:具有相同父节点的节点。例如,在<parent><child1/><child2/></parent>中,<child1><child2>互为兄弟节点。
  • 祖先节点:从当前节点向上直到根节点的所有节点。例如,在<grandparent><parent><child/></parent></grandparent>中,<grandparent><parent>都是<child>的祖先节点。
  • 后代节点:从当前节点向下直到最后一个子节点的所有节点。在上述例子中,<child><grandparent><parent>的后代节点。
  • 前序节点:包括当前节点及其所有祖先节点。
  • 后序节点:包括当前节点及其所有后代节点。
  • :XPath中用于描述节点之间关系的术语,如子轴(child axis)、父轴(parent axis)、祖先轴(ancestor axis)和后代轴(descendant axis)等。

XPath提供了丰富的路径表达式和函数,允许用户根据这些节点关系来选择和操作XML文档中的特定部分。例如,使用//可以选取文档中的所有后代节点,无论它们位于文档的哪个位置。使用/可以选取根节点的子节点,而.代表当前节点。

5. xpath中节点选择的工具

  • Chrome插件 XPath Helper
    • 下载地址:https://pan.baidu.com/s/1UM94dcwgus4SgECuoJ-Jcg 密码:337b
    • 把文件的后缀名crx改为rar,然后解压到xpath_…
    • 把解压后的文件夹拖入到已经开启开发者模式的chrome浏览器扩展程序界面
    • 重启浏览器
  • Firefox插件 XPath Checker

注意:
这些工具是用来学习xpath语法的,他们都是从elements中匹配数据,elements中的数据和url地址对应的响应不相同,所以在代码中,不建议使用这些工具进行数据的提取

6. xpath语法

知识点

  • 掌握元素路径的相关方法
  • 掌握获取获取属性的方法
  • 掌握获取文本的方法

我们将在下面的例子中使用这个 XML 文档。

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>

6.1 选取节点

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

使用chrome插件选择标签时候,选中时,选中的标签会添加属性class=“xh-highlight”

下面列出了最有用的表达式:

表达式描述
nodename选中该元素。
/从根节点选取、或者是元素和元素间的过渡。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
选取当前节点的父节点。
@选取属性。
text()选取文本。

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式结果
bookstore选择bookstore元素。
/bookstore选取根元素 bookstore。注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book选取属于 bookstore 的子元素的所有 book 元素。
//book选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//book/title/@lang选择所有的book下面的title中的lang属性的值。
//book/title/text()选择所有的book下面的title的文本。

xpath基础语法练习:

接下来我们听过豆瓣电影top250的页面来练习上述语法

https://movie.douban.com/top250

  • 选择所有的h1下的文本
    • //h1/text()
  • 获取所有的a标签的href
    • //a/@href
  • 获取html下的head下的title的文本
    • /html/head/title/text()
  • 获取html下的head下的link标签的href
    • /html/head/link/@href

但是当我们需要选择所有的电影名称的时候会特别费力,通过下一小节的学习,就能够解决这个问题

6.2 查找特定的节点

路径表达式结果
//title[@lang=“eng”]选择lang属性值为eng的所有title元素
/bookstore/book[1]选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()]选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1]选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()>1]选择bookstore下面的book元素,从第二个开始选择
//book/title[text()=‘Harry Potter’]选择所有book下的title元素,仅仅选择文本为Harry Potter的title元素
/bookstore/book[price>35.00]/title选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

注意点:
在xpath中,第一个元素的位置是1,最后一个元素的位置是last(),倒数第二个是last()-1

6.3 选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符描述
*匹配任何元素节点。
@*匹配任何属性节点。
node()匹配任何类型的节点。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果
/bookstore/*选取 bookstore 元素的所有子元素。
//*选取文档中的所有元素。
//title[@*]选取所有带有属性的 title 元素。

6.3 选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式结果
//book/title | //book/price选取 book 元素的所有 title 和 price 元素。
//title | //price选取文档中的所有 title 和 price 元素。
/bookstore/book/title | //price选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。

小结

  1. xpath的概述XPath (XML Path Language),解析查找提取信息的语言
  2. xml是和服务器交互的数据格式和json的作用一致
  3. html是浏览器解析标签数据显示给用户
  4. xpath的节点关系:根节点,子节点,父节点,兄弟节点,子节点,后代节点
  5. xpath的重点语法获取任意节点://
  6. xpath的重点语法根据属性获取节点:标签[@属性 = '值']
  7. xpath的获取节点属性值:@属性值
  8. xpath的获取节点文本值:text()

好书推荐

《AI绘画与摄影实战108招:ChatGPT+Midjourney+文心一格》
在这里插入图片描述
《AI绘画与摄影实战108招:ChatGPT Midjourney 文心一格》通过10个专题内容、108个实用技巧、120多分钟教学视频,讲解了AI绘画与摄影的相关知识,随书附赠了108集同步教学视频、50多个素材效果、260多个书中案例关键词、5200个绘画关键词等。具体内容按以下两条线展开。
一是技能线:详细讲解了ChatGPT关键词的挖掘方法、文心一格的绘画技巧、常见的AI构图与光线色调指令、Midjourney常用的绘图指令,以及AI绘图的4种方法。
二是案例线:介绍了人物摄影、动物摄影、植物摄影、建筑摄影、慢门摄影、星空摄影、航拍摄影、全景摄影、风光摄影、人文摄影、产品摄影、时尚摄影等多种热门摄影的知识。
本书由浅入深,以实战为核心,既适合摄影师、绘画爱好者、设计师、插画师、漫画家、电商商家、艺术工作者等阅读,又可作为相关院校的教材。

购买链接:https://product.dangdang.com/29723004.html

编辑推荐

高效绘图! 10章核心内容,ChatGPT结合Midjourney与文心一格,实现AI全方位作品生成!
实战案例! 50多个素材效果+108招干货技巧+260多个指令关键词 5200款绘画关键词,实操实练,秒变AI绘画高手!
视频教学! 赠送108集教学视频,扫描二维码可随时随地全程查看操作过程,让学习更轻松!

内容简介

《AI绘画与摄影实战108招:ChatGPT Midjourney 文心一格》通过10个专题内容、108个实用技巧、120多分钟教学视频,讲解了AI绘画与摄影的相关知识,随书附赠了108集同步教学视频、50多个素材效果、260多个书中案例关键词、5200个绘画关键词等。具体内容按以下两条线展开。
一是技能线:详细讲解了ChatGPT关键词的挖掘方法、文心一格的绘画技巧、常见的AI构图与光线色调指令、Midjourney常用的绘图指令,以及AI绘图的4种方法。
二是案例线:介绍了人物摄影、动物摄影、植物摄影、建筑摄影、慢门摄影、星空摄影、航拍摄影、全景摄影、风光摄影、人文摄影、产品摄影、时尚摄影等多种热门摄影的知识。
本书由浅入深,以实战为核心,既适合摄影师、绘画爱好者、设计师、插画师、漫画家、电商商家、艺术工作者等阅读,又可作为相关院校的教材。

作者简介

石头,零点画室创始人,资深摄影师,省级摄影家协会会员,毕业于湖南工艺美术学院,参与过《蓝猫总动员》的创作,2022年远赴日本、美国学习AI绘画技术,对Midjourney、Stable Diffusion有着丰富的实战经验,尤喜动漫风、中国风效果的绘制。

目  录

目 录
第1章.文案生成:ChatGPT摄影应用……………………………001
1.1 掌握关键词的挖掘技巧……002
001 使用ChatGPT进行对话 …002
002 使用特定关键词提升逻辑性 …003
003 使用关键词拓宽思维广度 …004
004 提供详细要求获取答案 …006
005 提供实例说明需求 …007
006 通过扮演角色获取答案 …008
1.2 生成AI绘画关键词……010
007 直接提问获取关键词 …011
008 通过对话不断获取关键词 …013
009 区分中、英文关键词 …016
1.3 生成AI摄影关键词……019

前  言

在数字化时代,AI技术的发展对经济产生了巨大影响。它改变了生产、制造和服务行业,提高了生产效率,降低了成本,创造了新的商业模式。随着ChatGPT、Midjourney和文心一格等AI工具的出现和发展,AI绘画技术逐渐开始创作出各种新颖、独特的艺术作品,为艺术家提供了新的创作工具和灵感,帮助艺术家突破传统的创作限制。然而,目前市场上关于AI绘图工具的资料和书籍还相对稀缺。
秉持着响应国家科技兴邦、实干兴邦的精神,我们致力于为读者提供一种全新的学习方式,使其能够更好地适应时代发展的需要。本书结合ChatGPT与Midjourney、文心一格等多种AI绘图工具,为读者提供了108个实用技巧,从关键词提取到图片的制作生成,从讲解基础绘图参数到运用参数进行实战,帮助读者全方位熟悉AI绘图工具,使读者能够在日常生活中充分利用AI技术,体验人工智能在绘画和摄影中的潜力和价值。
综合来看,本书有以下3个亮点。
(1)实战干货。本书提供了108个实用的技巧和实例,涵盖了ChatGPT的关键词提取、文心一格的操作方法、全面大量的AI绘图指令和AI绘图操作步骤等各个方面的内容。这些实战干货可以帮助读者快速掌握AI绘画和AI摄影的核心技能,并将其应用到实际工作场景中。同时,本书还针对每个技巧进行了详细的说明和演示,并辅以360多张彩插图解实例操作过程,以便读者更好地理解和应用所学知识。
(2)视频教学。本书为所有操作案例录制了同步的高清教学视频,共108集,120多分钟,读者可以用手机扫码,边看边学,边学边用。
(3)物超所值。本书介绍了3款软件,读者花1本书的钱,可以同时学习3款软件的精华,并且随书赠送了50多个素材效果、260多个书中案例关键词、5200个绘画关键词,方便读者进行实战操作练习,提高自己的绘图技能。
特别提示:
(1)版本更新:本书在编写时,是基于当时各种AI工具和软件的界面截取的实际操作图片,但本书从编辑到出版需要一段时间,这些工具的功能和界面可能会有所变动,请在阅读时,根据书中的思路举一反三进行学习。其中,ChatGPT为3.5版,Midjourney为5.2版。
(2)指令的称谓:指令又称为关键词、描述词、提示词或“咒语”,它是我们与AI模型进行交流的机器语言,书中在不同场合使用了不同的称谓,主要是为了让大家更好地理解这些行业用语,避免一叶障目。另外,很多关键词暂时没有对应的中文翻译,强行翻译为中文也会让人无法理解AI模型。
(3)指令的使用:在Midjourney中,尽量使用英文指令,对于英文单词的格式没有太多要求,如首字母大小写不用统一、单词顺序不用太讲究等。但需要注意的是,每个指令中间最好添加空格或逗号,同时所有的标点符号使用英文字体。另外,需要特别注意的是,即使是相同的指令,AI模型每次生成的文案或图片内容也会有差别。
(4)特别提醒:尽管ChatGPT具备强大的模拟人类对话的能力,但由于其是基于机器学习的模型,因此在生成的文案中仍然会存在一些语法错误,读者需根据自身需求对文案进行适当修改或再加工后方可使用。
本书由石头编著,参与编写的人员还有刘阳洋,在此表示感谢。由于作者水平有限,书中难免存在疏漏之处,恳请广大读者批评、指正。读者可扫描封底“文泉云盘”二维码获取作者联系方式,与我们沟通交流。
在这里插入图片描述

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

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

相关文章

看不懂懂车大爆炸,你就错过了国产小车的王炸!

咦&#xff1f;咋的啦&#xff1f;咱中国自己的汽车品牌前几天在汽车工业协会公布的数据里一跃而起&#xff0c;真的是威风凛凛啊&#xff01;2023年咱们自家的乘用车品牌市场份额硬生生地占了个56%&#xff0c;这可是半壁江山啊&#xff01;特别是那些10万块钱以下的家用小车&…

K-Planes代码记录

随记 原文 K-Planes: Explicit Radiance Fields in Space, Time, and Appearance&#xff0c;又要换baseline&#xff0c;可是效果不好能怎么办呢&#xff0c;我可不可以发疯。k-planes的代码又是非常工程琐碎的&#xff0c;大佬的代码果然不顾小白死活。随便记录下整个过程。…

造一个交互式3D火山数据可视化

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 Plotly.js 创建交互式 3D 火山数据可视化 应用场景 本代码用于将火山数据库中的数据可视化&#xff0c;展示火山的高度、类型和状态。可用于地质学研究、教育和数据探索。 基本功能 该代码使用 Plotly…

【面试系列】信息安全分析师高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

基于TCP/QT/C++的网盘系统测试报告

目录 一、项目介绍 1、项目描述 2、项目组成模块 3、项目技术要点 二、用户功能测试 1、查看在线用户测试 1.1、运行服务器 1.2、登录两个账号 1.3、点击显示在线用户&#xff0c;可以看到jack和lucy 2、搜索用户测试 2.1、打开服务器&#xff0c;登录两个账号jack,lucy 2.2、在…

强化学习的数学原理:贝尔曼公式

大纲 这一节课程的大纲&#xff1a; 重点 对于这次课&#xff0c;重点是两个东西&#xff1a; Motivating examples(为什么需要贝尔曼公式) 首先要明白&#xff0c;为什么 return 是重要的&#xff1f; 之前其实就说过&#xff0c;return 能够帮助我们评价一个策略是好还是坏…

哪个牌子的超声波清洗器好?精选四大超强超声波清洗机力荐

生活中戴眼镜的人群不在少数&#xff0c;然而要维持眼镜的干净却不得不每次都需要清洗&#xff0c;只是通过手洗的方式实在太慢并且容易操作不当让镜片磨损更加严重&#xff01;所以超声波清洗机就诞生了&#xff01;超声波清洗机能够轻松清洗机眼镜上面的油脂污渍&#xff0c;…

Kubernetes的发展历程:从Google内部项目到云原生计算的基石

目录 一、起源与背景 1.1 Google的内部项目 1.2 Omega的出现 二、Kubernetes的诞生 2.1 开源的决策 2.2 初期发布 三、Kubernetes的发展历程 3.1 社区的成长 3.2 生态系统的壮大 3.3 重大版本和功能 3.4 多云和混合云的支持 四、Kubernetes的核心概念 4.1 Pod 4.…

有源晶振Output Load含义与供电范围解析

在深入探讨有源晶振的Output Load与供电范围之前&#xff0c;我们首先需要了解有源晶振的基本概念。有源晶振&#xff0c;又称为实时时钟模块或晶体振荡器&#xff0c;是一种能够提供稳定、精确频率信号的电子组件。与无源晶振不同&#xff0c;有源晶振内部包含了必要的电路&am…

机器学习复习总结

目录 第一章 机器学习的概念及其应用 1.1机器学习的特点&#xff1a; **1.2机器学习的分类&#xff1a; 1.2.1监督学习&#xff1a; 1.2.2无监督学习&#xff1a; 1.2.3强化学习&#xff1a; 1.2.4三种机器学习的区别 *1.3深度学习 1.3.1深度学习的实质&#xff1a; …

生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)

前言&#xff1a;今天演示下生产环境keepalived的部署方式&#xff0c;安装模式有很多&#xff0c;比如说主备模型和双主模型&#xff0c;主备分&#xff1a;抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置一、双节点均部署Nginx&#xff1a; 第一步&#xff1a;上传…

烟台网站建设前需要了解哪些

在进行烟台网站建设之前&#xff0c;需要了解以下几个重要的方面&#xff1a; 1. 目标和定位&#xff1a;在建设网站之前&#xff0c;需要明确网站的目标和定位。是为了展示公司业务&#xff0c;还是为了销售产品&#xff0c;或者是为了提供信息和服务等。根据不同的目标和定位…

JAVA:常用的算法指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 在软件开发过程中&#xff0c;算法扮演着关键的角色。它们用于解决各种问题&#xff0c;从数据处理到搜索、排序等。本文将介绍几种常见的算法及其 Java 实现&#xff0c;包括排序算…

防爆巡检终端在石化工厂安全保障中的应用

防爆巡检终端在石化工厂安全保障中的应用是广泛而关键的&#xff0c;其设计旨在确保在易燃易爆环境中进行安全、有效的巡检工作。以下是防爆巡检终端在石化工厂安全保障中的详细应用描述&#xff1a; 1. 环境监测与预警 防爆巡检终端配备了各种传感器&#xff0c;能够实时监测…

分享一个用于深入分析【大模型LLM】工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型&#xff08;LLM&#xff09;工作原理的工具&#xff0c;旨在增加这些复杂系统的透明度。它提供了一个交互式界面&#xff0c;用户可以通过它观察、分析模型对特定输入&#xff08;prompts&#xff09;的反应…

【MySQL基础篇】函数及约束

1、函数 函数是指一段可以直接被另一段程序程序调用的程序或代码。 函数 - 字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用的几个如下&#xff1a; 函数功能CONCAT(S1,S2,...,Sn)字符串拼接&#xff0c;将S1,S2,...,Sn拼接成一个字符串LOWER(str)将字符串str全部…

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略&#xff1a; 1&#xff09;学习已有系统&#xff0c;重用已有模型 2&#xff09;使用分类标签。分类标签来源于领域&#xff0c;需要我们研究一些资料并做一些提炼。从采用5W…

解决 prettier/prettier 和 indent 冲突问题和一点简单思考

用过 prettier 的都知道&#xff0c;经常会遇到 prettier 与 eslint 的某些规则冲突的情况。在之前的一篇文章中&#xff0c;我简单地描述过怎么搭建起应用 eslint/prettier 的基本配置&#xff0c;也提到了怎么解决 prettier 与 eslint 的一些冲突问题。 其中有这么一段话&am…

C语言 | Leetcode C语言题解之第202题快乐数

题目&#xff1a; 题解&#xff1a; //计算的过程函数&#xff0c;我没重点讲&#xff0c;很简单看一下代码就好了 int getSum(int n) {int sum 0;while (n) {sum (n % 10) * (n % 10);n / 10;}return sum; }bool isHappy(int n){int sum getSum(n);int hash[820] {0};whi…

寒武纪实现高维向量的softmax进阶优化和库函数对比

关于寒武纪编程可以参考本人之前的文章添加链接描述,添加链接描述,添加链接描述 实验证明,axis=0和axis=-1的时候,手写softmax速度可以和库函数媲美,甚至于更甚一筹。 src/softmax.mlu #include <bang.h> #include