使用推导式和生成器创建数组

简介: 这是一种利用推导式和生成器创建数组的方法。推导式的格式为 A = [F(x,y,...) for x=rx, y=ry, ...] ,它会对给定列表中的每个变量值计算 F(x,y,...),并返回一个N维的密集数组。例如: `[n^2 for n in 1:10]` 将创建一个包含1到10的平方的数组。此外,还可以创建多维数组,如 `[n*m for n in 1:10, m in 1:10]` 。如果省略方括号,则会生成一个生成器对象,该对象可以在不分配内存的情况下处理大型数据集,例如 `sum(1/n^2 for n=1:1000)`。

使用推导式和生成器创建数组

创建数组的另一种有用方法是使用推导。

数组推导式语法格式如下:

A = [ F(x,y,...) for x=rx, y=ry, ... ]
F(x,y,...) 取其给定列表中变量 x,y 等的每个值进行计算。值可以指定为任何可迭代对象,但通常是 1:n 或 2:(n-1) 之类的范围,或者像 [1.2, 3.4, 5.7] 这样的显式数组值。结果是一个 N 维密集数组,将变量范围 rx,ry 等的维数拼接起来得到其维数,并且每次 F(x,y,...) 计算返回一个标量。

实例
julia> [n^2 for n in 1:10]
10-element Vector{Int64}:
1
4
9
16
25
36
49
64
81
100
创建二维数组:

实例
julia> [n*m for n in 1:10, m in 1:10]
10×10 Matrix{Int64}:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
6 12 18 24 30 36 42 48 54 60
7 14 21 28 35 42 49 56 63 70
8 16 24 32 40 48 56 64 72 80
9 18 27 36 45 54 63 72 81 90
10 20 30 40 50 60 70 80 90 100
也可以在没有方括号的情况下编写(数组)推导,从而产生称为生成器的对象。

以下实例创建一个数组:

实例
julia> collect(n^2 for n in 1:5)
5-element Vector{Int64}:
1
4
9
16
25
以下表达式在不分配内存的情况下对一个序列进行求和:

实例
julia> sum(1/n^2 for n=1:1000)
1.6439345666815615

相关文章
|
15天前
使用推导式和生成器创建数组
使用推导式和生成器创建数组
使用推导式和生成器创建数组
使用推导式和生成器创建数组
|
5月前
|
关系型数据库 分布式数据库 数据库
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
|
5月前
|
弹性计算 Linux Windows
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
幻兽帕鲁作为一款爆火的游戏,在进行多人游戏时,需要搭建服务器。本文章汇总了在阿里云上搭建幻兽帕鲁服务器时可能会遇到部署问题、配置选择问题、运行问题等,以便用户快速参考和解决搭建和运行中的挑战。
15503 18
【阿里云幻兽帕鲁】搭建 密码 存档 使用 费用 常见问题合集
|
2月前
|
存储 Python
【面试题】排列序列
【面试题】排列序列
30 1
特殊的浮点值
在浮点数标准中,定义了三种特殊值:正无穷(如`Inf16`, `Inf32`, `Inf64`),表示大于所有有限浮点数;负无穷(如 `-Inf16`, `-Inf32`, `-Inf`),表示小于所有有限浮点数;以及非数字`NaN`(如`NaN16`, `NaN32`, `NaN`),它与任何浮点数都不相等,包括自身。这些特殊值在进行算术运算时会表现出特定的行为,例如`1/0`会产生正无穷,而`0/0`则产生`NaN`。此外,通过`typemin`和`typemax`函数可以查询浮点类型的最小和最大值,分别是负无穷和正无穷。
特殊的浮点值
在浮点数标准中,定义了三种特殊值:正无穷(如`Inf16`, `Inf32`, `Inf64`),表示大于所有有限浮点数;负无穷(如 `-Inf16`, `-Inf32`, `-Inf`),表示小于所有有限浮点数;以及非数字`NaN`(如`NaN16`, `NaN32`, `NaN`),它与任何浮点数都不相等,包括自身。这些特殊值在进行算术运算时会表现出特定的行为,例如`1/0`会产生正无穷,而`0/0`则产生`NaN`。此外,通过`typemin`和`typemax`函数可以查询浮点类型的最小和最大值,分别是负无穷和正无穷。
|
2月前
|
大数据
使用推导式和生成器创建数组
这是一种利用推导式和生成器创建数组的方法。推导式的格式为 A = [F(x,y,...) for x=rx, y=ry, ...] ,它会根据给定的变量范围计算并返回一个N维密集数组。例如,[n^2 for n in 1:10] 将创建一个包含1到10平方的数组。此外,还可以通过省略方括号的方式创建生成器,例如:n^2 for n in 1:5,这种方式在处理大数据时更为高效,可以避免一次性分配大量内存。
特殊的浮点值
在浮点数标准中,定义了三种特殊值:正无穷(如`Inf16`, `Inf32`, `Inf64`),表示大于所有有限浮点数;负无穷(如 `-Inf16`, `-Inf32`, `-Inf`),表示小于所有有限浮点数;以及非数字`NaN`(如`NaN16`, `NaN32`, `NaN`),它与任何浮点数都不相等,包括自身。这些特殊值在进行算术运算时会表现出特定的行为,例如`1/0`会产生正无穷,而`0/0`则产生`NaN`。此外,通过`typemin`和`typemax`函数可以查询浮点类型的最小和最大值,分别是负无穷和正无穷。
|
5月前
|
存储 关系型数据库 MySQL
PolarDB-X 存储引擎核心技术 | 索引回表优化
数据库系统为了高效地存储、检索和维护数据,采用了多种不同的数据组织结构。不同的组织结构有其特定的用途和优化点,比如提高查询速度、优化写入性能、减少存储空间等,目前 PolarDB-X 采用了 B-Tree 的索引组织结构。