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

简介: 使用推导式和生成器可以方便地创建数组。例如,`[n^2 for n in 1:10]` 生成一个包含平方数的一维数组,而`[n*m for n in 1:10, m in 1:10]` 创建一个乘积的二维数组。无括号形式如`n^2 for n in 1:5` 产生生成器对象,通过`collect`转换为数组。此外,`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

相关文章
|
3月前
|
算法 前端开发
2649. 嵌套数组生成器
2649. 嵌套数组生成器
23 0
使用推导式和生成器创建数组
这是一种利用推导式和生成器创建数组的方法。推导式的格式为 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)` 就能在不分配内存的情况下对序列求和。
|
8月前
|
Python
Python列表推导式和嵌套的列表推导式
Python列表推导式和嵌套的列表推导式
66 0
|
10月前
|
Python
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
python之集合的创建与使用,遍历,集合常见的操作函数,集合与列表,元组,字典的嵌套
|
9月前
|
Python
Python函数每日一讲 - frozenset集合函数入门及实例
Python函数每日一讲 - frozenset集合函数入门及实例
17.从入门到精通:Python 推导式 列表推导式 字典推导式 集合推导式 元组推导式(生成器表达式)
17.从入门到精通:Python 推导式 列表推导式 字典推导式 集合推导式 元组推导式(生成器表达式)
|
Python
Python编程:列表、集合、字典推导式的示例
Python编程:列表、集合、字典推导式的示例
|
Python
7.5-7.6 列表生成式和生成器以及区别
一、列表生成式是 python 受欢迎的语法之一 通过一句简洁的语法就可以对一组元素进行过滤 还可以对得到的元素进行转换处理。 li = [x + x for x in range(1, 101) if x % 2 == 0] print(li) def funa(x): ...
846 0
|
Python 程序员
Python迭代器生成器,私有变量及列表字典集合推导式(二)
1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getattr(),hasattr(),isinstance().