小编bfl*_*tch的帖子

Pythonic方式使用范围与排除的最后一个数字?

如果我想要一个从0到100的列表,我可以使用五个步骤range(0,105,5),但我也可以使用range(0,101,5).

老实说,这些对我来说都没有意义,因为排除最后一个数字似乎不直观.

除此之外,以5为单位从0到100创建列表的"正确"方法是什么?如果有人有时间,在什么情况下排除最后一个数字使代码更容易阅读?

python range

7
推荐指数
1
解决办法
638
查看次数

如何为一长串整数创建一个优化的迭代器?

假设我有一个非常大的整数列表,占用了大量的内存.如果列表的整数是偶数增量,那么我可以很容易地将列表表示为占用相对没有内存的迭代器.但是对于更复杂的模式,将此列表表示为迭代器将变得更加困难.

是否有一个Python包可以分析整数列表并返回"优化"迭代器?或者我可以研究的方法来实现这个目标?

python integer iterator list listiterator

7
推荐指数
1
解决办法
235
查看次数

在Fortran中,切片数组是否会在内存中创建副本?

假设我将一个数组切片传递给一个操作其输入的子程序:

some_subroutine(a(:,1))
Run Code Online (Sandbox Code Playgroud)

该部分的原件是否被a更改,或者是一些a(:,1)改变的副本?

fortran slice fortran90

5
推荐指数
1
解决办法
1150
查看次数

Julia 中的线性代数运算顺序

如果我有一个命令y = A*B*x,其中A&B是大矩阵而x&y是向量,Julia 会预成型y = ((A*B)*x)还是y = (A*(B*x))?

第二个选项应该是最好的,因为它只需要分配一个额外的向量而不是一个大矩阵。

julia

5
推荐指数
1
解决办法
104
查看次数

具有广播尺寸灵活性的For循环

与广播的辅助下,下面的代码将工作是否x,yz是标量,大小的矢量n,或它们的任何组合.

b = zeros(n)
b .= x.*y.*z .+ x
Run Code Online (Sandbox Code Playgroud)

但是,我想要一个for循环.以下for循环仅在x大小为矢量时才有效n,y是标量,并且z是标量.

for i = 1:n
    b[i] = x[i]*y*z + x[i]
end
Run Code Online (Sandbox Code Playgroud)

要写入相当于b .= x.*y.*z .+ x为一个for循环的任何情况下,我只能想到写一个for循环的每一个组合的x,yz内if语句.在更复杂的数学表达式中,这可能会使更多变量变得混乱.

有没有比使用许多if语句更优雅的方式来做我喜欢的事情?

julia

3
推荐指数
1
解决办法
97
查看次数

标签 统计

julia ×2

python ×2

fortran ×1

fortran90 ×1

integer ×1

iterator ×1

list ×1

listiterator ×1

range ×1

slice ×1