python迭代器详解
不懂的问题:什么是协变、逆变?渐进式?
_T_co = TypeVar("_T_co", covariant=True) # Any type covariant containers.
- 作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者,目前于海外某世界知名高校就读计算机相关专业。
- 荣誉:
阿里云博客专家认证
、腾讯开发者社区优质创作者,在CTF省赛校赛多次取得好成绩。跨领域学习
,喜欢摄影、弹吉他、咏春拳。文章深入浅出、语言风趣
;爱吃必胜客社区创立者,旨在“发现美 欣赏美
- 🏆 学习系列专栏
。🏅 Python学习宝库
。🏅 网络安全学习宝库
文章目录
- ⭐️迭代器详解
- 🌟迭代器示例
- 🌟__iter__()与__next__()方法解释
- 🌟常用迭代器zip和enumerate
- 🌟itertools模块提供的各种迭代器类型
- 🌟 源码
- 🌟Python迭代器常见的用法
- ⭐️迭代器与生成器的区别
- 🌟生成器的例子
- ⭐️迭代器的内部实现
- ⭐️总结
- 🌟__next__(),__iter__()详细解释
- 🌟 魔法函数实现原理
- 🌟 我的故事
⭐️迭代器详解
Python迭代器是Python编程语言中非常常用的一种工具。它是访问容器(例如列表、元组等)
中的元素的一种方式
,可以逐个访问容器中的元素
,而不必
将整个
容器存储在内存
中。
Python迭代器可以被定义为:
- 一个实现了
__iter__()
方法的对象; - 通过调用
__next__()
方法来逐个访问容器中的元素。
🌟迭代器示例
下面是一个简单的Python迭代器示例:
class MyIterator:def __init__(self, lst):self.lst = lst# 列表self.index = 0# 索引def __iter__(self):return selfdef __next__(self):if self.index < len(self.lst):value = self.lst[self.index]self.index += 1return valueelse:raise StopIteration
在这个示例中,我们创建了一个称为"MyIterator"的类,它包含了一个列表和一个索引值
。该类还实现了__iter__()
和__next__()
方法。
🌟__iter__()与__next__()方法解释
__iter__()
方法返回该对象本身
,因此可以直接对该对象使用for...in...
语句进行迭代。__next__()
方法则根据当前索引值来获取列表中的下一个元素
,如果已经到达列表末尾,则抛出StopIteration
异常。
以下是一个使用MyIterator迭代器的示例:
my_list = [1, 2, 3, 4, 5]
my_iter = MyIterator(my_list)
for item in my_iter:print(item)
执行结果为:
1
2
3
4
5
这是一个简单的例子,实际上Python迭代器可以应用
于许多不同类型的容器,包括列表、元组、字典以及文件等
。
🌟常用迭代器zip和enumerate
在Python标准库中,还提供了一些常用的迭代器,例如enumerate()
和zip()
。
从更深层次上来讲,Python迭代器是支持惰性计算(lazy evaluation)
的一种工具。惰性计算指的是在需要时才进行计算
,而非提前将所有的计算都执行完毕。对于大型数据集合,惰性计算可以节省内存
开销并提高程序性能。
Python迭代器的另一个特点是可逆性(reversibility)
,也就是说我们可以通过反向迭代器(reverse iterator)
来逆序
访问容器中的元素。Python标准库中提供了reversed()
函数用于创建反向迭代器
。以下是一个简单示例:
my_list = [1, 2, 3, 4, 5]
for item in reversed(my_list):print(item)
执行结果为:
5
4
3
2
1
🌟itertools模块提供的各种迭代器类型
此外,Python迭代器还支持使用itertools
模块提供的各种迭代器类型,例如cycle()
、count()
和groupby()
等。
需要注意的是,Python 2.x版本中的迭代器实现与Python 3.x有所不同,因此在编写跨Python版本的代码时应当谨慎。
总的来说,Python迭代器是Python编程语言中非常强大和灵活的工具,可以应用于各种场景和数据类型,帮助我们更加高效地处理数据和任务。
🌟 源码
class Iterator(Iterable[_T_co], Protocol[_T_co]):@abstractmethoddef __next__(self) -> _T_co: ...def __iter__(self) -> Iterator[_T_co]: ...class Iterable(Protocol[_T_co]):@abstractmethoddef __iter__(self) -> Iterator[_T_co]: ...
🌟Python迭代器常见的用法
- 计算斐波那契数列
斐波那契数列是指从0和1开始,后续的每一项都是前面两项的和。使用Python迭代器可以很方便地计算斐波那契数列
。
class Fib:def __init__(self, max):self.max = maxdef __iter__(self):self.a = 0self.b = 1return selfdef __next__(self):fib = self.aif fib > self.max:raise StopIterationself.a, self.b = self.b, self.a + self.breturn fib
以上代码定义了一个Fib类,实现了__iter__
和__next__
两个方法,该类实现了一个迭代器,可以使用for-in语句遍历所有小于max的斐波那契数列元素。
- 读取大型文件数据
当我们需要处理大量数据
时,将整个数据集加载到内存中可能会导致程序崩溃或效率低下。使用Python迭代器来处理大型文件数据非常理想,这种方式只在内存中维护当前处理的数据块,而不需要一次性读取整个文件。
with open('large_file.txt', 'r') as f:for line in f:process_line(line)
以上代码打开一个大型文件并使用for-in语句迭代遍历每一行数据,可以在不占用太多内存的情况下逐行处理文件。
- 实现生成器函数
除了使用类来定义迭代器,Python还支持使用生成器函数(generator function)来实现迭代器。生成器函数可以通过yield语句来产生值,当生成器被调用时,它将返回一个可迭代对象,使用for-in语句可以遍历这个可迭代对象。
def my_generator(max):for i in range(max):yield ifor item in my_generator(5):print(item)
以上代码定义了一个生成器函数my_generator,使用yield语句来产生0~max-1的数字。使用for-in语句可以遍历这个生成器函数产生的可迭代对象,输出结果为:
0
1
2
3
4
⭐️迭代器与生成器的区别
在Python中,除了迭代器外,还有一种非常常见
的工具就是生成器(generator)
。两者都可以用yield
语句实现,但它们有一些区别。
迭代器
必须实现__iter__
和__next__
方法,而生成器
只需要实现一个yield语句
即可。生成器
可以保存状态
,每次调用yield语句
时会自动保存当前的局部变量和执行位置
,并在下一次调用时恢复执行状态
,从而实现了迭代器的功能。生成器
的主要作用是生成序列
,而迭代器则可以用于各种数据结构的遍历
,包括序列、映射、文件等。
🌟生成器的例子
def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + b
以上代码定义了一个名为fibonacci的生成器
,它可以按照斐波那契数列的规律不断生成新的数值。我们可以使用for-in语句来迭代这个生成器,也可以使用next函数单独获取它的下一个值:
f = fibonacci()
print(next(f)) # 输出 0
print(next(f)) # 输出 1
print(next(f)) # 输出 1
print(next(f)) # 输出 2
⭐️迭代器的内部实现
Python中的迭代器实际上是基于协议(protocol)实现
的,它需要满足两个条件:
- 实现
__iter__
方法并返回self
; - 实现
__next__
方法,并在每次调用时返回下一个值
,如果没有下一个值则抛出StopIteration
异常。
在Python中,任意对象只要满足以上两个条件就可以作为迭代器使用。以下是一个简单的自定义迭代器的例子:
class MyIterator:def __init__(self, data):self.data = dataself.index = 0def __iter__(self):return selfdef __next__(self):if self.index >= len(self.data):raise StopIterationvalue = self.data[self.index]self.index += 1return value
以上代码定义了一个名为MyIterator的迭代器类,它包含了一个列表作为数据源
,
⭐️总结
__iter__()
:迭代器,生成迭代对象时调用
,返回值必须是对象自己,然后for可以循环调用next方法
__next__()
:每一次for循环都调用
该方法(必须存在
)
🌟__next__(),iter()详细解释
在 Python 中,使用 __next__()
和 __iter__()
方法可以创建一个迭代器对象。迭代器是一种特殊的对象,它允许我们逐个访问容器中的元素,而不必预先将整个容器加载到内存
中。
下面是 __next__()
和 __iter__()
的代码和讲解:
class MyIterator:def __init__(self, data):self.data = dataself.index = 0def __iter__(self):#@summary: 迭代器,生成迭代对象时调用,#返回值必须是对象自己,然后for可以循环调用next方法return selfdef __next__(self):# @summary: 每一次for循环都调用该方法(必须存在)if self.index >= len(self.data):# 抛出 StopIteration 异常,表示迭代结束raise StopIterationvalue = self.data[self.index]self.index += 1return value
在上面的代码中,创建了一个名为 MyIterator
的迭代器类。该迭代器类包含以下两个方法:
__init__(self, data)
:构造函数,接受一个参数 data,即需要遍历的数据。__iter__(self)
:实现可迭代协议
,返回当前对象的迭代器对象
,即返回 self。__next__(self)
:实现迭代器协议
,返回容器中的下一个元素,如果没有更多元素,则抛出 StopIteration 异常。
现在,我们可以使用这个迭代器来遍历任何可迭代对象(如列表、元组、字典等)。下面是使用 MyIterator
迭代器来遍历一个列表的示例代码:
my_list = [1, 2, 3, 4, 5]
my_iterator = MyIterator(my_list)for i in my_iterator:print(i)
在上面的代码中,我们首先创建了一个包含 5 个元素的列表 my_list
。然后,我们创建了一个 MyIterator
对象 my_iterator
,并将 my_list
作为参数传递给它。最后,我们使用 for
循环来遍历这个迭代器,从而遍历 my_list
中的所有元素。
通过上述示例代码可以看出,使用 __next__()
和 __iter__()
方法可以创建一个自定义的迭代器对象,并用于遍历任何可迭代的对象
。
🌟 魔法函数实现原理
Python中的“魔法函数”是一种特殊的函数
,其名称以双下划线“__”开头和结尾,例如“init”,“call”等,这些函数在Python的类定义中起到了特殊的作用。魔法函数的实现原理是利用了Python语言的一些特性,即“特殊方法解释器
”(SPECIAL METHOD LOOKUP)。
特殊方法解释器的工作方式为:当对象接收到一个消息
,但在该对象上没有对应的方法
时,会自动查找并调用该对象所在类中的特殊方法
,从而实现对该消息的处理。因此,魔法函数的作用就是为Python对象提供了默认的行为或操作
,从而方便我们对对象进行操作或控制。
下面以一个简单的例子说明魔法函数的实现原理
:
class MyClass:def __init__(self, x):self.x = xdef __str__(self):return "MyClass with x = {}".format(self.x)# 创建一个MyClass对象
obj = MyClass(10)# 调用__str__魔法函数
print(obj)
上述代码定义了一个名为MyClass的类,其中包含了__init__和__str__两个魔法函数。__init__用于初始化对象的属性,__str__用于返回对象的字符串表示形式。在创建MyClass对象并输出时,会自动调用__str__函数并返回对象的字符串表示形式。
这就是魔法函数的实现原理:当创建对象时,会自动调用__init__
魔法函数进行初始化
操作;当需要获取对象的字符串
表示时,会自动调
用__str__
函数。通过使用魔法函数,我们可以很方便地对Python对象进行操作和控制,从而提高程序的效率和可维护性。
除了__init__和__str__这两个常见的魔法函数外,Python语言内置了大量的其他魔法函数,例如:
- call(self, *args, **kwargs): 使对象可以像函数一样被调用;
- getitem(self, key): 实现对象的索引访问;
- setitem(self, key, value): 实现对象的索引赋值;
- len(self): 返回对象的长度;
- add(self, other): 实现对象的加法运算;
- eq(self, other): 判断两个对象是否相等;
- …
通过定义这些内置的魔法函数,我们可以非常方便地实现自己的对象类型,支持各种操作和控制。例如,我们可以自定义一个矩阵类型,并实现其加法、乘法、转置等操作:
class Matrix:def __init__(self, data):self.data = datadef __add__(self, other):result = []for i in range(len(self.data)):row = []for j in range(len(self.data[i])):row.append(self.data[i][j] + other.data[i][j])result.append(row)return Matrix(result)def __mul__(self, other):result = []for i in range(len(self.data)):row = []for j in range(len(other.data[0])):s = 0for k in range(len(self.data[i])):s += self.data[i][k] * other.data[k][j]row.append(s)result.append(row)return Matrix(result)def transpose(self):result = []for i in range(len(self.data[0])):row = []for j in range(len(self.data)):row.append(self.data[j][i])result.append(row)return Matrix(result)def __str__(self):s = ""for i in range(len(self.data)):for j in range(len(self.data[i])):s += str(self.data[i][j]) + " "s += "\n"return s# 创建两个矩阵
m1 = Matrix([[1, 2], [3, 4]])
m2 = Matrix([[5, 6], [7, 8]])# 执行加法和乘法操作
print(m1 +
🌟 我的故事
python学习之路任重而道远,要想学完说容易也容易,说难也难。 很多人说python最好学了,但扪心自问,你会用python做什么了?
刚开始在大学学习c语言,写一个飞行棋的小游戏,用dos界面来做,真是出力不讨好。 地图要自己一点一点画出来,就像这样:
================
| |
| |
|===============
从此讨厌编程,不想继续学下去。每次作业应付。
算法考试,数据结构考试随便背代码,只求通过。
最后呢?我学会变成了吗?只能对一些概念侃侃而谈,但真的会几行代码,能写出实用工具吗?
答案变得模糊。
所以我们要从现在开始,学好python,不要再糊弄下去!!!
相关文章:
![](https://img-blog.csdnimg.cn/083e22ef77cd4326a05791a0b41e9c51.png)
python迭代器详解
不懂的问题:什么是协变、逆变?渐进式? _T_co TypeVar("_T_co", covariantTrue) # Any type covariant containers.作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者&…...
![](https://img-blog.csdnimg.cn/881e2f0cc1ca4b30a52141fb2d90c203.png)
关于Docker逃逸
关于Docker逃逸 文章目录关于Docker逃逸前言一、判断是否为docker容器?二、privileged特权模式启动容器逃逸三、 Docker Remote API未授权访问逃逸四、危险挂载导致Docker逃逸五、危险挂载Docker Socket逃逸六、 挂载宿主机procfs逃逸七、脏牛漏洞来进行docker逃逸八…...
![](https://www.ngui.cc/images/no-images.jpg)
@Autowired和@Resource区别
Autowired和Resource到底有什么区别 Autowired 和 Resource 都是用来实现依赖注入的注解(在 Spring/Spring Boot 项目中),但二者却有着 5 点不同: 来源不同:Autowired 来自 Spring 框架,而 Resource 来自…...
![](https://img-blog.csdnimg.cn/6b68a3c1ecf745c5abba18af6d499b53.png)
动态内存管理详细讲解
目录 1.为什么存在动态内存分配 2. 动态内存函数的介绍 2.1 malloc和free 2.2 calloc 2.3 realloc 今天要和大家分享的内容是的动态内存管理,我们先从他的定义入手学习。 1.为什么存在动态内存分配 我们到现在已经掌握了内存开辟的方式就是要么创建一个变量…...
![](https://img-blog.csdnimg.cn/9d7eafb22d70477db3d32448efee92ef.png)
Python和Excel的完美结合:常用操作汇总(案例详析)
在以前,商业分析对应的英文单词是Business Analysis,大家用的分析工具是Excel,后来数据量大了,Excel应付不过来了(Excel最大支持行数为1048576行),人们开始转向python和R这样的分析工具了&#…...
![](https://img-blog.csdnimg.cn/01fba945bac4402087db1146f400a0bc.png)
卡特兰数、斯特林数基础
卡特兰数 从格点(0,0)(0,0)(0,0)走到格点(n,n)(n,n)(n,n),只能向右或向上走,不能穿过对角线,的路径的条数,称为卡特兰数HnH_nHn。 则有H01H_01H01。 通项公式: Hn(2nn)−(2nn−1)H_n\begin{pmatrix} 2n\\ n \en…...
STL——mapmultimap和setmultiset
一、关联式容器 与序列式容器相同,关联式容器也是用于存储数据的,不同的是,关联式容器里存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。 二、键值对 用来表示具有一一对应的一种结构,该…...
![](https://img-blog.csdnimg.cn/4a204d9e7d524b94a3513d1f53e696d1.jpeg)
2023热门抖音权重查询小程序源码
2023热门抖音权重查询小程序源码 跟抖音上很火的一模一样,小程序适配优化。接口免费。小程序不是网页 修改教程: 1,如果想修改或者去除水印,直接删除或修改“index.html”12~22行 2,如果想修改logo,直接…...
![](https://img-blog.csdnimg.cn/5800422d3c3e44b8915a2525ec7b1edc.png)
153.网络安全渗透测试—[Cobalt Strike系列]—[生成hta/exe/宏后门]
我认为,无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感!!! 文章目录一、后门简介1、hta后门2、exe后门3、宏病毒后门二、生成后门并测试0、测试环境1、生成hta后门并测试2、生成exe后门并测试3、生成宏病毒后门…...
![](https://img-blog.csdnimg.cn/41a3a632482c4e3fbb3025669252d0e6.png)
如何成为优秀的程序员
崔宝秋,现任小米首席架构师、小米云平台负责人。1995年赴美留学,纽约州立大学石溪分校计算机科学系博士毕业,曾任IBM高级工程师和高级研发经理、雅虎搜索技术核心团队主任工程师、LinkedIn主任工程师,2012年回国加入小米科技。 20…...
![](https://img-blog.csdnimg.cn/970dc100d8cf496e84d50d43aa66638c.png)
多线程(四):线程安全
在开始讲解线程安全之前我们先来回顾一下我们学了那些东西了: 1. 线程和进程的认识 2. Thread 类的基本用法 3. 简单认识线程状态 4. 初见线程安全 上一章结束时看了一眼线程安全问题,本章将针对这个重点讲解。 一个代码在单线程中能够安全执行&am…...
![](https://img-blog.csdnimg.cn/bab327e98da44a5d9f771d59909d698d.png)
[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用
🍇 博主主页: 【Systemcall小酒屋】🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术…...
![](https://www.ngui.cc/images/no-images.jpg)
C++之模拟实现string
文章目录前言一、包含的相关头文件二、构造和析构1.构造函数2.拷贝构造1.传统写法2.现代写法3.赋值运算符重载1.传统写法2.现代写法4.析构函数三、iterator四、modify1.push_back(尾插一个字符)2.append(尾插一个字符串)3.运算符重载1.尾插字…...
![](https://img-blog.csdnimg.cn/14e618ffdda240b099774c7c013d5634.png)
SpringBoot实战(十三)集成 Admin
目录一、简介二、搭建 springboot-admin 管理服务1.Maven 依赖2.application.yml3.添加 EnableAdminServer4.启动服务,查看页面三、搭建 springboot-admin-client 客户端服务1.Maven 依赖2.application.yml3.启动服务,查看页面四、搭配 Eureka 使用1.搭建…...
![](https://www.ngui.cc/images/no-images.jpg)
mke2fs命令:建立ext2文件系统
以下内容源于网络资源的学习与整理,如有侵权请告知删除。 使用格式 mke2fs [options] [设备名称] [区块数] options与含义 -c:检查是否有损坏的区块。-F:不管指定的设备为何,强制执行mke2fs。-M:记录最后一次挂入的…...
![](https://img-blog.csdnimg.cn/5a3ef2ba0cd24ec7b32bf3b3df18d1c2.png)
免费分享一个springboot+vue的办公系统
springbootvue的OA系统项目介绍项目部署项目特点项目展示项目介绍 这是一个采用前后端分离开发的项目,前端采用 Vue 开发、后端采用 SpringBoot Mybatis 开发。 很适合java初学者练手和学习。 前端技术:Vue3.2 Vue-Router Pinia Ant Design Vue 3.X…...
![](https://img-blog.csdnimg.cn/a0d9514957b642258e38fba10d96a3b6.png)
STM32数据搬运工DMA
DMA的概念DMA,全称为:Direct Memory Access,即直接存储器访问。DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路ÿ…...
![](https://img-blog.csdnimg.cn/a30d8aec94f74a9480193d9bee7ebac5.png)
4、操作系统——进程间通信(2)(system V-IPC介绍)
目录 一、system V-IPC常识 1、key和ID 2、文件描述符 3、函数(ftok) ftok产生IPC对象的健值key(类似文件路径) 4、例子 5、使用命令查看或删除当前系统中的IPC对象 一、system V-IPC常识 1、key和ID (1&#x…...
![](https://img-blog.csdnimg.cn/8c3b5ebfa3c24999ae01fe4290946403.png)
基于CentOS Stream 9平台搭建Nacos2.0.4集群以及OpenResty反向代理
目录展示Nacos2.0.4集群搭建1. 下载2. 解压3.修改配置3.1分别修改下启动类中JDK路径以及启动大小3.2 分别配置数据源3.3 创建nacos数据库3.4 修改cluster.conf配置3.4.1 复制并修改3.4.2 编辑文件,修改三台主机地址3.4.3 分别放入另外两个nacos的conf目录下:4. 启动…...
![](https://www.ngui.cc/images/no-images.jpg)
老杜MySQL入门基础 第二天
导入演示数据 1、连接MySQL 2、创建"bjpowernode"数据库 create database bjpowernode;3、选择数据库 use bjpowernode4、导入数据 source D:\bjpowernode.sql(文件的路径)1 去除重复记录(把查询结果去除重复记录)(原表数据不会改变) 使用关键字dist…...
![](https://img-blog.csdnimg.cn/f60d13d125b54d67806e29d37da37d77.png)
Python深度学习实战:人脸关键点(15点)检测pytorch实现
引言 人脸关键点检测即对人类面部若干个点位置进行检测,可以通过这些点的变化来实现许多功能,该技术可以应用到很多领域,例如捕捉人脸的关键点,然后驱动动画人物做相同的面部表情;识别人脸的面部表情,让机…...
![](https://img-blog.csdnimg.cn/1fd7d99c7ef24aa3858ab41be9e34987.png)
linux简单入门
目录Linux简介Linux目录结构Linux文件命令文件处理命令文件查看命令常用文件查看命令Linux的用户和组介绍Linux权限管理Linux简介 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹࿰…...
![](https://img-blog.csdnimg.cn/img_convert/3fd41b48bbc631605622485d88988d6d.png)
给准备面试网络工程师岗位的应届生一些建议
你听完这个故事,应该会有所收获。最近有一个23届毕业的大学生和我聊天,他现在网络工程专业大四,因为今年6、7月份的时候毕业,所以现在面临找工作的问题。不管是现在找一份实习工作,还是毕业后找一份正式工作࿰…...
![](https://img-blog.csdnimg.cn/img_convert/7a1065f025d18ca2e980fe272a59de45.jpeg)
主线程与子线程之间相互通信(HandlerThread)
平时,我们一般都是在子线程中向主线程发送消息(要在主线程更新UI),从而完成请求的处理。那么如果需要主线程来向子线程发送消息,希望子线程来完成什么任务。该怎么做?这就是这篇文章将要讨论的内容。 一、…...
![](https://img-blog.csdnimg.cn/778840fa1b57415185083096a9e62cde.png)
13基于双层优化的电动汽车日前-实时两阶段市场竞标
MATLAB代码:基于双层优化的电动汽车日前-实时两阶段市场竞标 关键词:日前-实时市场竞标 电动汽车 双层优化 编程语言:MATLAB平台 参考文献:考虑电动汽车可调度潜力的充电站两阶段市场投标策略_詹祥澎 内容简介:…...
![](https://img-blog.csdnimg.cn/f08402187b874a409e691b0501183074.png)
REDIS19_zipList压缩列表详解、快递列表 - QuickList、跳表 - SkipList
文章目录①. 压缩列表 - zipList②. 快递列表 - QuickList③. 跳表 - SkipList①. 压缩列表 - zipList ①. ZipList是一种特殊的"双端链表",由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作,并且该操作的时间复杂度为O(1) (oxff:11111111) type…...
![](https://www.ngui.cc/images/no-images.jpg)
JavaScript 基础 - 第3天
文章目录JavaScript 基础 - 第3天笔记数组数组的基本使用定义数组和数组单元数据单元值类型数组长度属性操作数组JavaScript 基础 - 第3天笔记 数组 数组的基本使用 定义数组和数组单元 <script>// 1. 语法,使用 [] 来定义一个空数组// 定义一个空数组let…...
![](https://img-blog.csdnimg.cn/cd43e71cfa7745849c1164aedab377c7.png)
23.3.26总结
康托展开 是一个全排列与自然数的映射关系,康托展开的实质是计算当前序列在所有从小到大的全排列中的顺序,跟其逆序数有关。 例如:对于 1,2,3,4,5 来说,它的康托展开值为 0*4!0*3!0*2!0*1&…...
![](https://www.ngui.cc/images/no-images.jpg)
【Java学习笔记】37.Java 网络编程
Java 网络编程 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题&…...
![](https://img-blog.csdnimg.cn/1773631be592441bbb63fee65cc0f8d4.png)
Azure OpenAI 官方指南03|DALL-E 的图像生成功能与安全过滤机制
2021年1月,OpenAI 推出 DALL-E。这是 GPT 模型在图像生成方面的人工智能应用。其名称来源于著名画家、艺术家萨尔瓦多 • 达利(Dal)和机器人总动员(Wall-E)。DALL-E 图像生成器,能够直接根据文本描述生成多…...
![](/images/no-images.jpg)
网站建设课程培训/企业网站运营推广
文章目录 前言I 第三方SDK分享文件1.1 微信SDK1.2 友盟SDK1.3 判断是否安装微信II 原生API的文件预览及其他应用打开2.1 预览文件2.2 文件分享2.3 控制是否显示copy、 print、saveToCameraRollIII 案例3.1 文件下载和预览3.2 使用数据模型保存下载文件路径3.3 使用数据模型分享…...
![](/images/no-images.jpg)
做淘客网站的/360浏览器网页版入口
题目背景 John的农场缺水了!!! 题目描述 农民John 决定将水引入到他的n(1<n<300)个牧场。他准备通过挖若干井,并在各块田中修筑水道来连通各块田地以供水。在第i 号田中挖一口井需要花费W_i(1<W_i<100,000)元。连接i …...
![](https://img-blog.csdnimg.cn/img_convert/1afd229665d85e9f2ec2c3b13e07fef6.png)
济宁网站建设公司怎么样/百度智能建站系统
由于幻灯片主要用于面向大众范围的演讲,所以通常不会在幻灯片中使用过多的文字,我们可以将文字内容中的主要信息提取出来。 然后将提取出来的核心信息,放置在幻灯片中的显眼的位置。以这张幻灯片为例,文字内容主要是描述互动教程网的各项成就。 因此我们可以将一些关键信…...
![](/images/no-images.jpg)
深圳建设企业网站公司/潍坊网站建设公司
本文转载 原文地址: 使用java api 访问 hbase (三)...
![](http://pic.enorth.com.cn/0/05/45/57/5455749_881160.jpg)
多导航织梦网站模板下载/免费学生html网页制作成品
经过长达三年的研发,微软最新的并且是迄今为止最伟大的Windows Server操作系统已经发布了。在过去的几年中,Windows Server的前一代产品——Windows Server 2000/2003,都受到了用户的一致好评。无论大型企业用户还是中小型用户都对Windows Se…...
![](https://img-blog.csdnimg.cn/img_convert/01ddec14dd30ce376da735fa739da65e.gif)
宁海县建设局网站下属单位/公司网站怎么建立
这是我2021年的第13篇原创文章,原汁原味的技术之路尽在Jerrycodes什么是内存泄漏Key 的泄漏Value 的泄漏如何避免内存泄露什么是内存泄漏内存泄漏指的是,当某一个对象不再有用的时候,占用的内存却不能被回收,这就叫作内存泄漏。因…...