小编Mat*_*teo的帖子

如何清除或删除julia中的全局?

是否有任何语法与MATLAB的"清除"类似,即如果我有一个全局变量"a".我怎么摆脱它?我怎么做模拟

clear a
Run Code Online (Sandbox Code Playgroud)

global global-variables julia

21
推荐指数
5
解决办法
2万
查看次数

R列表中名称查找的时间复杂度是多少?

我拼命想通过谷歌找到答案而失败了.我本人即将自己做基准测试,但认为这里的某个人可能知道答案,或者至少是一个记录在案的参考资料.

为了扩展我的问题:假设我有一个L长度为R的列表N,其中N相当大(例如,10000,1.00000,1百万或更多).假设我的列表中包含每个元素的名称.`

我想知道检索一个命名条目需要多长时间,即要做

 L[[ "any_random_name" ]]  
Run Code Online (Sandbox Code Playgroud)

这是时间O(N),即与列表的长度成比例,还是它O(1),即,与列表名称无关的常量.或者它可能O( log N )

lookup r list time-complexity

6
推荐指数
1
解决办法
643
查看次数

如何以通用方式定义向量(或迭代器)的和?

我有以下sum功能的矢量i32编译和工作正常:

fn sum_vec(s: &Vec<i64>, init: &i64) -> i64 {
    (*s).iter().fold(*init, |acc, &item| acc + item)
}
Run Code Online (Sandbox Code Playgroud)

为了教自己关于Rust泛型,我想为任何T实现表单添加的 类型定义相应的泛型函数add(T, T) -> T.我试过了

use std::ops::Add;

fn sum_gen_1<T: Add>(s: &Vec<T>, init: &T) -> T {
    (*s).iter().fold(*init, |acc, &item| acc + item)
}
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误

error[E0308]: mismatched types
 --> src/lib.rs:4:42
  |
4 |     (*s).iter().fold(*init, |acc, &item| acc + item)
  |                                          ^^^^^^^^^^ expected type parameter, found associated type
  |
  = note: expected type `T`
             found type `<T as …
Run Code Online (Sandbox Code Playgroud)

generics sum rust

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

如何在 Julia 中重载/重新定义二元运算符?

我不断失去关于如何重新定义|| (“或”)或&&(“和”)二元运算符的参考。我在某处读到,必须首先做的事情importall Base。然后我尝试了

Base.||( x::MyType, y::MyType ) = dosomething( x, y )
Run Code Online (Sandbox Code Playgroud)

并且

Base.or( x::MyType, y::MyType ) = dosomething( x, y ) 
Run Code Online (Sandbox Code Playgroud)

但这些都不起作用。如果有人可以提供参考解释如何执行此操作的基础知识,我将不胜感激...我无法找到诸如“在 Julia 中重新定义二元运算符”之类的查询...

overloading operator-overloading binary-operators or-operator julia

4
推荐指数
1
解决办法
1974
查看次数

如何获得julia宏的帮助?

我想知道如何获得Julia宏的帮助或至少找到定义它的源文件.例如,我知道有一个宏@spawnat.但如果我尝试做

> julia> help( @spawnat )  
ErrorException("wrong number of arguments")
Run Code Online (Sandbox Code Playgroud)

要么

> help( spawnat ) 
ErrorException("spawnat not defined")
Run Code Online (Sandbox Code Playgroud)

这不是很好......

macros julia

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

OCaml 中 Python 枚举函数最简单的模拟是什么?

在 Python 中枚举的工作原理如下:

a_list = ['a', 'b', 'c']
    
for i, x in enumerate(a_list): 
    print(i, x)
Run Code Online (Sandbox Code Playgroud)

输出将是:

0 a
1 b
2 c
Run Code Online (Sandbox Code Playgroud)

因此, enumerate 实际上返回一个 (i, x) 形式对的生成器(几乎是一个惰性序列),其中 i 的范围超过 0, 1, 2, ...,x 是列表中按顺序排列的元素。

到目前为止,我已经提出了列表的定义,它不会产生“生成器”,但也会产生一个对的列表:


let enumerate (a_list: 'a list): (int * 'a) list =
  let rec _enumerar (a_list: 'a list) (accum: (int * 'a) list) (i: int): (int * 'a) list =
    match a_list with
    | [] -> accum
    | x::xs -> _enumerar  xs ((i, x)::accum) (i+1)
  in …
Run Code Online (Sandbox Code Playgroud)

python ocaml list enumerate lazy-sequences

2
推荐指数
1
解决办法
433
查看次数