Tag: arrays

在Ruby中将数组拆分为多个小数组的最佳方法

根据某些条件将数组拆分成多个数组的最简单方法是什么? 在我的场景中,我需要将整数和字符串值移动到不同的数组。 我尝试过split方法,但是没有按预期工作。 x=[1,2,3,”a”,”b”,4] x.split {|item| item.kind_of? Fixnum} 在C#中, Linq有一个group by选项,可帮助您根据条件对对象进行分组。 Object上是否有类似的方法(不使用activerecord)? 有一个简单的方法吗?

在Ruby中,为什么Array.new(size,object)创建一个由对同一对象的多个引用组成的数组?

如本回答所述 , Array.new(size, object)创建一个对同一object具有size引用的数组。 hash = Hash.new a = Array.new(2, hash) a[0][‘cat’] = ‘feline’ a # => [{“cat”=>”feline”},{“cat”=>”feline”}] a[1][‘cat’] = ‘Felix’ a # => [{“cat”=>”Felix”},{“cat”=>”Felix”}] 为什么Ruby会这样做,而不是做object clone或clone ?

范围数组的索引数组

ruby的范围非常酷。 我最终得到这样的数组: geneRanges = [(234..25), (500..510), (1640..1653)] 然后必须删除它们的一部分。 为此我: genePositions = geneRanges.collect {|range| range.entries }.flatten => [500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653] 它们被操纵,因此一些数字被排除在外,其他数字可能被添加。 我最终可能会这样: [505, 506, 507, 600, 601, 602, 603, 1643, 1644, 1645, 1646, 1647, […]

arrays行为不端

这是代码: # a = Array.new(3, Array.new(3)) a = [[nil,nil,nil],[nil,nil,nil]] a[0][0] = 1 a.each {|line| p line} 随着输出: [1, nil, nil] [nil, nil, nil] 但使用注释行: [1, nil, nil] [1, nil, nil] [1, nil, nil] 那为什么呢?

如何“取消”Ruby数组?

我目前正在尝试转换这个ruby数组: [5, 7, 8, 1] 进入这个: [[5], [7], [8], [1]] 什么是最好的方式? 我现在这样做: [5, 7, 8, 1].select { |element| element }.collect { |element| element.to_a } 但是我收到以下错误: 警告:默认`to_a’将过时 我究竟做错了什么? 能否请您就如何做到这一点提出建议? 在此先感谢您的问候!

负索引如何与`Array# =`一起使用?

我试着看看Array#[]=是如何工作的,并且玩了: enum[int] = obj → obj enum[start, length] = obj → obj enum[range] = obj → obj 问题1 我有一个数组b在0指数处持有nil 。 b = [] b[0] # => nil 我试图在下面的代码中用整数10替换nil 。 b[-1] = 10 # => IndexError: index -1 too small for array; minimum: 0 为什么上面的代码不起作用,但下面的代码呢? 对于大小为1的数组,为什么索引0和-1处理方式不同? b[0] = 5 # => 5 b[-1] = 10 # […]

Ruby:比较2个匹配数组,并计算匹配实例的数量

我有2个数组: @array1 = [a,b,c,d,e] @array2 = [d,e,f,g,h] 我想比较两个数组以找到匹配(d,e)并计算找到的匹配数(2)? # yes, but how to count instances? no matches found… 提前谢谢〜

我可以使用默认值在Ruby中创建数组吗?

Perl对默认值非常好: : jmglov@laurana; perl -e ‘@foo; printf “%d\n”, $foo[123]’ 0 : jmglov@laurana; perl -e ‘%foo; printf “%d\n”, $foo{bar}’ 0 Ruby也可以这样做,至少对于哈希来说是这样的: >> foo = Hash.new(0) => {} >> foo[:bar] => 0 但同样看起来对数组不起作用: >> foo = Array.new(0) => [] >> foo[123] => nil >> foo[124] = 0 => 0 >> foo[456] = 0 => 0 >> foo[455,456] […]

从重复的数组元素中删除

从重复的数组元素中删除的最佳方法是什么。 例如,从数组中 a = [4, 3, 3, 1, 6, 6] 需要得到 a = [4, 1] 我的方法适用于大量元素的过慢。 arr = [4, 3, 3, 1, 6, 6] puts arr.join(” “) nouniq = [] l = arr.length uniq = nil for i in 0..(l-1) for j in 0..(l-1) if (arr[j] == arr[i]) and ( i != j ) nouniq […]

从Ruby中的多维数组创建排列

我在Ruby中有以下多维数组: [[1,2], [3], [4,5,6]] 我需要输出以下内容: [[1,3,4], [1,3,5], [1,3,6], [2,3,4], [2,3,5], [2,3,6]] 我试过创建一个递归函数,但我运气不好。 是否有任何Rubyfunction可以帮助解决这个问题? 或者是递归执行此操作的唯一选择? 谢谢