相关疑难解决方法(0)

识别列表中的连续数字组

我想在列表中标识连续数字组,以便:

myfunc([2, 3, 4, 5, 12, 13, 14, 15, 16, 17, 20])
Run Code Online (Sandbox Code Playgroud)

返回:

[(2,5), (12,17), 20]
Run Code Online (Sandbox Code Playgroud)

并且想知道最好的方法是什么(特别是如果在Python中有内置的东西).

编辑:注意我原本忘了提到个别数字应该作为单独的数字返回,而不是范围.

python list range continuous

81
推荐指数
6
解决办法
4万
查看次数

使用R编码序列长度

有没有办法在R中编码增加的整数序列,类似于使用行程编码(rle)编码运行长度?

我将举例说明:

类比:行程编码

r <- c(rep(1, 4), 2, 3, 4, rep(5, 5))
rle(r)
Run Length Encoding
  lengths: int [1:5] 4 1 1 1 5
  values : num [1:5] 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

期望:序列长度编码

s <- c(1:4, rep(5, 4), 6:9)
s
[1] 1 2 3 4 5 5 5 5 6 7 8 9

somefunction(s)
Sequence lengths
  lengths: int [1:4] 5 1 1 5
  value1 : num [1:4] 1 5 5 5
Run Code Online (Sandbox Code Playgroud)

编辑1

因此,somefunction(1:10)将给出结果: …

encoding r

14
推荐指数
2
解决办法
2925
查看次数

确定 R 中连续数字的序列

类似于在列表中查找连续数字组在 R 中查找向量中的连续值,不同之处在于我有一个可能高达 4 的数字序列,即

 y=c(4*1:4,24,31,33,39,4*16:20)
> y
 [1]  4  8 12 16 24 31 33 39 64 68 72 76 80
Run Code Online (Sandbox Code Playgroud)

我想要一个函数来返回每个由最多 4 个分隔的值序列,所以我得到:

4 8 12 16 # all sep by at most 4
31 33 # all sep by at most 4
64 68 72 76 80 # all sep by at most 4
Run Code Online (Sandbox Code Playgroud)

我试过:

st=c(1,which(diff(y)<5)+1)
en=c(st-1,length(y))
y[st]
[1]  4  8 12 16 33 68 72 76 80
y[en]
[1]  4 …
Run Code Online (Sandbox Code Playgroud)

diff r sequence

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

标签 统计

r ×2

continuous ×1

diff ×1

encoding ×1

list ×1

python ×1

range ×1

sequence ×1