itertools 模块中常用函数的使用场景

itertools是Python中用于高效处理迭代器的工具库,其核心在于惰性求值和内存优化,适用于大规模数据或无限序列处理。它提供三类主要函数:无限迭代器(如count、cycle、repeat)用于生成无限序列;序列终止迭代器(如chain、islice、groupby)实现多个可迭代对象的串联、切片及分组;组合生成器(如product、permutations、combinations)则用于生成笛卡尔积、排列和组合。这些工具不仅提升代码简洁性与可读性,还通过C语言实现保证高性能,广泛应用于数据处理、算法设计(如路径搜索、状态探索)和数据分析(如特征工程、模式识别),尤其在处理大数据流时,借助islice、takewhile等函数实现高效内存使用,是构建高效迭代逻辑的“瑞士军刀”。

itertools 模块中常用函数的使用场景

itertools

模块在 Python 里,说实话,我觉得它就是个宝藏,一个专门用来高效处理迭代器的标准库。它提供了一系列构建复杂迭代器的工具,这些工具不仅能节省内存,还能让你的代码写得更优雅、更“Pythonic”。在我看来,它就是那种你一旦掌握了,就再也回不去以前那种写循环方式的利器。它不是万能的,但它解决的问题,往往是那些用普通循环写起来既笨重又低效的场景。

itertools

的核心价值在于其惰性求值(lazy evaluation)的特性,这意味着它只在你真正需要时才生成下一个元素,而不是一次性把所有结果都计算出来并存储在内存中。这对于处理大规模数据或者无限序列时,简直是救命稻草。

解决方案

itertools

模块中的函数大致可以分为几类:无限迭代器、终止于最短输入序列的迭代器、组合生成器。我们来挑几个我个人觉得最常用、最有代表性的来聊聊它们的具体应用场景。

1. 无限迭代器:

count

,

cycle

,

repeat

itertools.count(start=0, step=1)

: 生成一个从

start

开始,每次递增

step

的无限序列。

场景: 我经常用它来生成唯一的 ID,或者在需要一个无限增长的计数器时。比如,模拟一个事件流,给每个事件一个递增的序列号。

import itertools

生成从10开始,每次加2的序列

for i in itertools.count(10, 2):

if i > 20:

break

print(i) # 输出 10, 12, 14, 16, 18, 20

这里我注释掉了无限循环的部分,因为实际使用中你总得有个终止条件。

itertools.cycle(iterable)

: 对一个可迭代对象进行无限循环。

场景: 想象一下,你有一组预设的颜色,需要轮流分配给不同的图表元素;或者在负载均衡时,需要轮流选择不同的服务器。

import itertools

colors = [‘red’, ‘green’, ‘blue’]color_picker = itertools.cycle(colors)

for _ in range(7): # 模拟7个元素需要颜色

print(next(color_picker))

输出 red, green, blue, red, green, blue, red


itertools.repeat(object, times=None)

: 重复生成一个对象。如果

times

指定了,就重复

times

次;否则,无限重复。

场景: 当你需要一个常量值重复多次时,比如初始化一个列表,或者给多个任务分配同一个默认配置。

import itertools

重复一个值5次

print(list(itertools.repeat(‘Hello’, 5))) # 输出 [‘Hello’, ‘Hello’, ‘Hello’, ‘Hello’, ‘Hello’]


2. 终止于最短输入序列的迭代器:

chain

,

islice

,

groupby

*`itertools.chain(iterables)`**: 将多个可迭代对象串联起来,形成一个单一的迭代器。

场景: 我发现这个在处理来自不同源但结构相似的数据时特别好用。比如,从几个日志文件读取数据,或者合并不同数据库查询的结果。它避免了先将所有数据加载到内存中再合并的开销。

import itertools

list1 = [1, 2, 3]tuple1 = (‘a’, ‘b’)set1 = {4, 5}chained_iter = itertools.chain(list1, tuple1, set1)print(list(chained_iter)) # 输出 [1, 2, 3, ‘a’, ‘b’, 4, 5] (set的顺序可能不同)


itertools.islice(iterable, start, stop=None, step=1)

: 对迭代器进行切片。和列表切片语法类似,但它适用于任何迭代器,而且是惰性求值的。

场景: 当你处理一个非常大的文件或数据库查询结果时,只想要其中的一部分数据,而不是全部加载。这简直是大数据处理的必备技能。

import itertools

data = range(1000000) # 模拟一个非常大的数据集

只取前5个元素

print(list(itertools.islice(data, 5))) # 输出 [0, 1, 2, 3, 4]

从索引10开始,到20结束(不包含),步长为2

print(list(itertools.islice(data, 10, 20, 2))) # 输出 [10, 12, 14, 16, 18]


itertools.groupby(iterable, key=None)

: 将连续的具有相同

key

的元素分组。

场景: 这个函数在我做数据分析时出镜率很高。比如,你有一份按日期排序的日志,想按天统计;或者一份学生名单,想按班级分组。需要注意的是,

groupby

只对“连续”相同的元素进行分组,所以通常在使用前需要先对数据进行排序。

import itertools

data = [{‘name’: ‘Alice’, ‘grade’: ‘A’},{‘name’: ‘Bob’, ‘grade’: ‘B’},{‘name’: ‘Charlie’, ‘grade’: ‘A’},{‘name’: ‘David’, ‘grade’: ‘A’},{‘name’: ‘Eve’, ‘grade’: ‘B’},]

假设数据已经按grade排序,这里为了演示手动排序

data.sort(key=lambda x: x[‘grade’])

排序后: [{‘name’: ‘Alice’, ‘grade’: ‘A’}, {‘name’: ‘Charlie’, ‘grade’: ‘A’}, {‘name’: ‘David’, ‘grade’: ‘A’}, {‘name’: ‘Bob’, ‘grade’: ‘B’}, {‘name’: ‘Eve’, ‘grade’: ‘B’}]

for grade, students in itertools.groupby(data, key=lambda x: x[‘grade’]):print(f”Grade {grade}:”)for student in students:print(f” – {student[‘name’]}”)

输出:

Grade A:

– Alice

– Charlie

– David

Grade B:

– Bob

– Eve


3. 组合生成器:

product

,

permutations

,

combinations

*`itertools.product(iterables, repeat=1)`**: 计算多个可迭代对象的笛卡尔积。

场景: 当你需要生成所有可能的组合时,比如生成密码的所有可能字符组合,或者在测试中生成所有参数组合。

repeat

参数可以让你对单个可迭代对象进行多次笛卡尔积。

import itertools

colors = [‘red’, ‘blue’]sizes = [‘S’, ‘M’, ‘L’]

所有颜色和尺寸的组合

print(list(itertools.product(colors, sizes)))

输出: [(‘red’, ‘S’), (‘red’, ‘M’), (‘red’, ‘L’), (‘blue’, ‘S’), (‘blue’, ‘M’), (‘blue’, ‘L’)]

密码组合,假设密码是两位数字

print(list(itertools.product(’01’, repeat=2)))

输出: [(‘0’, ‘0’), (‘0’, ‘1’), (‘1’, ‘0’), (‘1’, ‘1’)]


itertools.permutations(iterable, r=None)

: 生成可迭代对象中所有长度为

r

的排列(元素顺序敏感)。

场景: 解决需要考虑元素顺序的问题,比如生成所有可能的团队成员排班顺序,或者在算法竞赛中探索所有可能的路径。

import itertools

items = [‘A’, ‘B’, ‘C’]

所有长度为2的排列

print(list(itertools.permutations(items, 2)))

输出: [(‘A’, ‘B’), (‘A’, ‘C’), (‘B’, ‘A’), (‘B’, ‘C’), (‘C’, ‘A’), (‘C’, ‘B’)]


itertools.combinations(iterable, r)

: 生成可迭代对象中所有长度为

r

的组合(元素顺序不敏感)。

场景: 当你只需要选择一组元素,而不在乎它们的排列顺序时。例如,从一组候选人中选出几位组成委员会,或者从一副牌中选择特定的牌型。

import itertools

items = [‘A’, ‘B’, ‘C’, ‘D’]

所有长度为2的组合

print(list(itertools.combinations(items, 2)))

输出: [(‘A’, ‘B’), (‘A’, ‘C’), (‘A’, ‘D’), (‘B’, ‘C’), (‘B’, ‘D’), (‘C’, ‘D’)]


好了,聊了这么多基础的,我们再深入一点看看它在更复杂场景下的表现。

为什么

itertools

是 Python 迭代的“瑞士军刀”?

我个人觉得“瑞士军刀”这个比喻非常贴切,因为它真的集合了太多小巧但功能强大的工具。它的强大之处,远不止于代码行数的减少,更在于它改变了我们处理序列和循环的方式。

首先,内存效率是它最大的亮点。传统的列表操作,比如

[x for x in data if condition(x)]

,会立即创建一个新的列表来存储所有符合条件的元素。如果

data

非常大,这可能会导致内存爆炸。

itertools

的函数,例如

filterfalse

(虽然上面没细说,但也是个好例子),返回的都是迭代器,它们只在需要时才计算下一个值。这意味着你可以处理远超内存容量的数据集,这对于日志分析、大数据流处理来说,简直是核心能力。

其次,它的性能非常出色。

itertools

模块的底层是用 C 语言实现的,这意味着它的执行速度比纯 Python 编写的等效循环要快得多。在需要高性能迭代的场景,比如科学计算或实时数据处理中,这一点至关重要。

再者,它极大地提高了代码的可读性和简洁性。很多复杂的循环逻辑,比如组合、排列、分组,用普通的

for

循环写起来会非常冗长且容易出错。

itertools

提供的高级抽象,让你能用一行代码表达复杂的迭代模式,让代码意图更清晰。这就像是把一堆散乱的零件组装成了一个精密的工具,而不是每次都从零开始搭。

最后,它鼓励一种函数式编程的思维方式。通过链式调用

itertools

的函数,你可以构建出强大的数据处理管道,将数据看作是在一系列转换中流动的。这种声明式的风格,往往比命令式的循环更易于理解和维护。

在处理大数据流时,

itertools

如何帮助我们优化内存使用?

在处理大数据流时,内存优化绝对是个核心挑战。

itertools

在这方面表现得非常突出,主要是因为它坚持了惰性求值的原则。它不像列表那样一次性把所有数据都加载到内存里,而是像水龙头一样,你什么时候拧开,它才什么时候出水。

想象一下,你有一个 TB 级别的日志文件,你只想筛选出其中某些错误信息,并只看前 100 条。如果用传统方法,你可能会先读取整个文件到内存(这显然不行),或者逐行读取并存储所有符合条件的行到一个新列表,直到达到 100 条。但即使是这样,中间也可能积累大量的临时数据。

itertools

提供了更优雅的解决方案:

itertools.islice()

的妙用:这是我处理大文件时最常用的一个。它允许你像切片列表一样切片任何迭代器,但它不会创建中间列表。你只告诉它你想要从哪里到哪里,它就只会从源迭代器中取出那些需要的部分,而不会加载其他数据。

import itertoolsimport time# 模拟一个无限大的数据流,比如日志文件或传感器数据def big_data_stream():    i = 0    while True:        # 模拟一些计算或IO延迟        # time.sleep(0.001)        yield f"Log entry {i}"        i += 1# 我只想看第10000条到第10010条日志# 注意:这里不会生成前面的9999条数据到内存,只是跳过for entry in itertools.islice(big_data_stream(), 10000, 10010):    print(entry)# 输出 Log entry 10000 到 Log entry 10009

你看,我并没有把前面一万条日志都存起来,

islice

只是“跳”过去了。

itertools.takewhile()

itertools.dropwhile()

:这两个函数可以根据一个条件智能地“截取”或“跳过”数据流。

takewhile

会一直取元素,直到条件不再满足;

dropwhile

则会一直丢弃元素,直到条件不再满足,然后从那里开始取走所有剩下的元素。这对于处理带有特定标记或分隔符的数据流非常有用,你不需要预先加载所有数据来找到这些标记。

itertools.chain()

的串联能力:当你的数据分散在多个文件或多个数据源时,

chain

可以把它们“链接”成一个单一的迭代器。这意味着你不需要把所有文件内容都读到内存中再合并成一个大列表,而是可以按顺序一个接一个地处理它们,每次只处理当前文件或数据源的数据。

这些函数共同构成了

itertools

在内存优化方面的核心能力,让 Python 在处理大数据时也能保持高效和优雅。

itertools

在算法设计和数据分析中有哪些不为人知的妙用?

除了日常的数据处理,

itertools

在算法设计和数据分析领域也隐藏着不少“杀手锏”,有些用法可能不是那么显而易见,但一旦掌握,能极大提升解决问题的效率和代码的简洁性。

1. 算法设计中的组合与探索

路径搜索与图算法:在图算法中,我们经常需要探索节点之间的所有可能路径。虽然

itertools.permutations

直接用于大规模图会非常低效(因为排列组合数量爆炸),但对于小规模的子问题或者作为启发式算法的起点,它能快速生成所有可能的节点访问顺序。例如,一个简单的旅行商问题(TSP)的暴力解法,就是通过

permutations

来尝试所有城市访问顺序。

import itertoolscities = ['A', 'B', 'C']# 探索所有可能的城市访问顺序for path in itertools.permutations(cities):    print(f"Path: {' -> '.join(path)}")# Path: A -> B -> C# Path: A -> C -> B# ...

状态空间探索:在一些决策或游戏算法中,你需要探索所有可能的状态转换。

itertools.product

可以帮助你生成所有可能的操作组合,从而模拟下一步的所有可能结果。比如,一个棋盘游戏,你可以用

product

结合每个棋子的可能移动来生成所有合法走法。

密码学与暴力破解(学习目的):在学习密码学时,

product

可以用来生成所有可能的密码组合,从而理解暴力破解的原理和计算复杂性。

2. 数据分析中的特征工程与模式识别

生成交互特征:在机器学习的特征工程阶段,我们有时需要创建现有特征之间的交互项。

itertools.combinations

可以非常方便地生成所有两两(或更多)特征的组合,然后你可以计算它们的乘积、差值等作为新的特征。

import itertoolsimport pandas as pddata = pd.DataFrame({    'feature_A': [1, 2, 3],    'feature_B': [4, 5, 6],    'feature_C': [7, 8, 9]})# 生成所有两两特征组合for f1, f2 in itertools.combinations(data.columns, 2):    data[f'{f1}_x_{f2}'] = data[f1] * data[f2]print(data)# 输出 DataFrame 包含了 A*B, A*C, B*C 等新特征

模式识别与序列分析

itertools.groupby

结合

itertools.pairwise

(Python 3.10+) 或手动实现的滑动窗口,可以在时间序列数据中识别连续出现的模式。比如,识别连续上涨的股票价格、连续出现的用户行为序列等。

数据清洗与验证:当你需要验证数据集中的某些属性是否满足特定模式时,

itertools

的组合生成器可以帮助你生成所有预期的模式,然后与实际数据进行比对。

这些应用场景可能需要你跳出常规思维,把问题抽象成迭代器可以处理的形式。一旦你习惯了这种思考方式,

itertools

就会成为你工具箱里一把无往不利的利器。它鼓励你用更声明式、更高效的方式来解决那些看似复杂的迭代问题。

以上就是itertools 模块中常用函数的使用场景的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1369794.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何判断一个对象是否是某个类的实例?
上一篇 2025年12月14日 09:58:20
如何理解Python的Web框架(Django/Flask)的异同?
下一篇 2025年12月14日 09:58:38

相关推荐

  • win10本地安全策略在哪

    win10本地安全策略在哪win10本地安全策略在哪win10本地安全策略在哪win10本地安全策略在哪

    很多使用windows 10系统的小伙伴应该都不少吧,但大家是否清楚windows 10的本地安全策略具体在哪里呢?也许有一部分人已经了解了,但还有一些朋友可能会感到困惑。别担心,接下来小助手就为大家详细介绍如何找到并打开本地安全策略的方法,希望能帮到大家哦~ 步骤一: 首先,点击屏幕左下角的开始菜…

    2026年9月6日 用户投稿
    100
  • 百度文库官网入口网页版登陆 百度文库网页版在线使用官方入口

    百度文库网页版是学习与办公资料获取的高效平台,1、通过官方网址https://wenku.baidu.com/进入,确保安全可靠;2、支持文档在线浏览,无需下载即可流畅阅读多种格式文件;3、资源分类齐全,覆盖教育、职场、法律等多个领域,便于精准查找;4、具备高效检索功能,输入关键词即可快速匹配目标内…

    2026年9月6日
    000
  • Spring Cache 中如何优雅地添加常量到 Key?

    Spring Cache Key 中优雅地集成常量 在使用 Spring Cache 时,如何在 Key 中有效地添加常量值?本文提供两种简洁的解决方案: 方案一:利用 Bean 属性 将常量值定义为 Bean 的属性,并在 @Cacheable 注解的 key 属性中引用该 Bean 属性。 方案…

    2026年9月6日
    000
  • 小米SU7荣获第五届《汽车风云盛典》风云2024·智联车

      近日,小米汽车宣布其首款智能电动汽车小米su7在第五届《汽车风云盛典》中荣获“风云2024·智联车”奖项。该盛典由中央广播电视总台主办,以“数智”为主题,旨在评选出中国市场消费者认可、具有市场指导性并体现未来趋势的年度车型。小米su7从31款入围车型中脱颖而出,经过企业报名、市场筛选、专家评审等…

    2026年9月6日
    000
  • Rust多线程编程中的JoinHandle::join方法:何时需要使用以及如何处理潜在错误?

    std::thread::joinhandle::join方法详解及常见疑惑解答 问题: 为什么在示例代码中,在使用std::sync::mpsc::channel进行多线程通信后,需要使用join方法等待子线程退出? 回答: 接收消息并不能保证线程已经退出了,它只说明了对应线程的send方法已经被…

    用户投稿 2026年9月6日
    000
  • 安装Win10系统的电脑配置太低怎么办?

    目前,许多电脑用户都打算将操作系统升级到win10版本,但又担心自己的设备硬件规格较低,无法流畅运行新系统。实际上,win10对电脑的要求并不算特别高。那么具体有多低呢?接下来就为大家详细说明一下。当然,对于那些硬件配置确实偏低的用户来说,这里也提供了一些应对办法! Win10系统所需的最低配置标准…

    2026年9月6日
    100
  • framework4.0怎么安装 下载教程指南

    framework4.0怎么安装 下载教程指南framework4.0怎么安装 下载教程指南framework4.0怎么安装 下载教程指南framework4.0怎么安装 下载教程指南

    windows系统在运行某些程序或安装软件时,经常会提示需要.net framework 4.0环境支持。若系统中未安装该组件,可能导致应用程序无法启动或运行异常。本文将为你提供详细的.net framework 4.0安装指南,帮助你轻松解决因缺少运行库而导致的问题。 一、.NET Framewo…

    2026年9月6日 用户投稿
    100
  • 正确在Groovy脚本中调用返回URL的方法并用于Shell命令

    本文旨在解决在groovy脚本中调用返回url的方法后,如何在后续的shell命令中正确使用该url的问题。通过详细阐述groovy字符串插值的机制,并提供正确的代码示例,帮助读者避免“could not resolve host”等常见错误,确保动态生成的url能够被shell命令正确解析和执行。…

    2026年9月5日
    400
  • 百家号视频尺寸比例是多少?百家号的视频比例是多少

    在当今这个短视频盛行的时代,百家号作为一款热门的短视频平台,吸引了大量用户入驻。不少用户在制作视频时,常常会遇到一个难题:百家号视频尺寸比例是多少?这篇文章将为你揭秘百家号视频尺寸比例,并教你如何制作出符合标准的完美视频尺寸。 一、百家号视频尺寸比例 百家号视频尺寸比例有三种:横版、竖版和方形。下面…

    2026年9月5日
    100
  • win10投影仪如何设置?win10投影仪设置详细介绍

    一、准备工作 在开始配置Win10系统连接投影仪之前,请确保你拥有以下设备: 1. 一台运行Windows 10系统的电脑 2. 一台可用的投影设备 3. 一根HDMI或VGA信号线 4. 投影使用的幕布或平整墙面 二、操作步骤 1. 连接设备:使用HDMI或VGA线将电脑与投影仪正确连接,并确认接…

    2026年9月5日
    100
  • 商络电子:2024年净利同比预增85.34%-126.52%

    商络电子发布2024年业绩预告:净利润同比预增85.34%-126.52% ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 商络电子(股票代码: 此处应补充股票代码)今日发布公告,预计2024年度实现营业收入620亿元至680亿元,同比增长2…

    2026年9月5日
    500
  • 重装系统文件会丢失吗?详细解析与避免方法

    重装系统文件会丢失吗?详细解析与避免方法重装系统文件会丢失吗?详细解析与避免方法重装系统文件会丢失吗?详细解析与避免方法重装系统文件会丢失吗?详细解析与避免方法

    电脑运行缓慢、频繁蓝屏或系统崩溃,许多用户最终会选择“重装系统”来解决问题。但在点击“开始重装”之前,一个令人犹豫的问题浮出水面:我的文件会不会因此全部消失?如果真的丢了,还有办法挽回吗?本文将为你全面解析这一常见困扰。 一、重装系统到底会不会删除文件? “重装系统”并非单一操作,而是包含多种方式,…

    2026年9月5日 用户投稿
    100
  • 手把手教你win7升级win10系统

    手把手教你win7升级win10系统手把手教你win7升级win10系统手把手教你win7升级win10系统手把手教你win7升级win10系统

    windows 10 系统问世已久,加之微软已终止对windows 7 的技术支持,仍在使用 windows 7 的用户确实可以考虑换用 windows 10 系统了。以下是将 windows 7 升级为 windows 10 的具体方法: 操作步骤如下: 打开 Windows 7 的控制面板,选择…

    2026年9月5日 用户投稿
    200
  • 电脑右下角出现激活windows 三种快速解决方法指南

    电脑右下角出现激活windows 三种快速解决方法指南电脑右下角出现激活windows 三种快速解决方法指南电脑右下角出现激活windows 三种快速解决方法指南电脑右下角出现激活windows 三种快速解决方法指南

    电脑屏幕右下角频繁弹出“激活windows,请转到设置以激活windows”的提示,不仅干扰正常使用,还可能导致部分功能受限,例如无法更换桌面背景。这类提示通常表明当前系统未完成激活或激活状态异常。本文将为您介绍三种高效、实用的windows激活方法,帮助您快速消除该提示,恢复正常操作体验。 方法一…

    2026年9月5日 用户投稿
    100
  • 封神通天雷火交加术法评测与武将适配大全

    战云密布,刹那间,一道携雷霆万钧之力的炽焰猛然划破敌军防线!这就是《封神:开天》中令敌人闻之色变的顶级法术——雷火并举!它不仅能造成毁灭性的打击,还能在敌营中种下恐惧的种子,瞬间逆转战局! 雷焰狂飙:技能效果深度解读 精确双击:锁定目标及其周边1格内的另一位不幸者,进行双重猛烈攻击! 智慧风暴:释放…

    2026年9月5日
    100
  • Java Servlet发出HTTP GET请求时报错:如何解决`java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient`?

    Java Servlet 发出 HTTP GET 请求时报错:java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 在 Java Servlet 中使用 HTTP GET 请求时,遇到 java.lang.NoClassD…

    2026年9月5日
    800
  • 雷军千万年薪挖角天才来自DeepSeek

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 国产大模型应用DeepSeek,近日强势登顶苹果中国及美国区应用商店免费下载榜,在美国区甚至超越ChatGPT,引发业界关注。 DeepSeek的成功标志着AI大模型应用正走向普惠化,加速AI应…

    2026年9月5日
    100
  • 浅谈K3OS:首个K8s操作系统,为边缘计算而生!

    4月24日,容器软件供应商rancher labs正式推出了k3os,这是业界首款专为kubernetes设计的超轻量级操作系统。它具有极低的资源消耗、简化的操作和秒级启动时间,能够显著简化在低资源计算环境中操作kubernetes的过程,提升kubernetes运维的安全性,充分支持边缘计算场景。…

    2026年9月5日
    200
  • 刚从GitHub克隆下来的项目,微信开发者工具就提示有文件修改的解决方法

    最近在使用GitHub和微信开发者工具管理一个微信小程序项目,期间遇到一个问题,刚克隆下来的项目,微信开发者工具就提示有文件修改(事实上什么也没改)。 确实是一个让人头疼的问题,为了避免推送后出现冲突,就排查了一下问题的原因: 不同操作系统使用的换行符是不一样的。Unix/Linux使用的是LF,M…

    2026年9月5日
    300
  • 蓝桥云课之新手入门指南

    蓝桥云课之新手入门指南蓝桥云课之新手入门指南蓝桥云课之新手入门指南蓝桥云课之新手入门指南

    第一种,就是网页版的linux 蓝桥ROS课程也是这种模式: 蓝桥云课ROS机器人发布5年啦(原实验楼ROS机器人在线云实践课程) 环境是16.04 代码语言:javascript代码运行次数:0运行复制 #includeint main(){ printf(“Hello, Shiyanlou.”)…

    2026年9月5日 用户投稿
    100

发表回复

登录后才能评论
关注微信