如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?

Posted

技术标签:

【中文标题】如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?【英文标题】:How to create a function that given a positive integer, returns a vector with the numbers multiples of 5 that exist? 【发布时间】:2021-12-26 17:54:49 【问题描述】:

我必须创建一个mult5 函数,给定一个正整数,返回一个向量,其中包含小于或等于该数字的 5 的倍数。例如,对于数字 17,mult5 (17) 应返回向量 (0, 5, 10, 15)。我不能使用任何类型的循环或 sapply / lapply。

我想我可以用 seq 函数做到这一点,但我不知道怎么做。这就是我尝试过的:

mult5 <- function(numero)
  modulo = numero %% 5 == 0
  seq = seq(from = 0, to = numero, by = modulo)

但我认为我不能将变量放入序列函数中并引发错误。 谁能解释或告诉我我能做什么?

测试:

is.list(mult5(24)) == FALSE
all(mult5(24) == c(0, 5, 10, 15, 20))
check.not.command("for", mult5)
check.not.command("while", mult5)

我不能使用 for/while。

错误信息:

 Error in seq.default(from = 0, to = numero, by = modulo) : 
  invalid '(to - from)/by' 

【问题讨论】:

不需要模数。 seq(0, numero, by = 5) 结果和错误信息是什么? 您的错误是因为numero %% 5 == 0 返回TRUE/FALSE,这不是seqby 参数的有效值 【参考方案1】:

如果numero 不是 5 的倍数,seq 函数已经具有您需要的行为,因此您可以将代码简化为:

mult5 <- function(numero)
  seq(from = 0, to = numero, by = 5)

【讨论】:

【参考方案2】:

这是我的例子:

def check(number: int):
    lst = list(range(0, number, 5))
    print(lst)

使用@diggusbiccus 建议编辑

【讨论】:

list(range(0,number,5)) @diggusbickus 你是对的,更pythonic的方式

以上是关于如何创建一个给定正整数的函数,返回一个向量,该向量的数字是 5 的倍数?的主要内容,如果未能解决你的问题,请参考以下文章

从模板生成排列

R语言数组数据框因子

查找多个向量之间的公共元素(无整数元素)

如何在向量向量上使用lower_bound?

C++ 如何制作二维向量函数?

c++ 以最佳方式返回结构和向量