Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将阵列划分为子阵列_Arrays_Ruby - Fatal编程技术网

Arrays 将阵列划分为子阵列

Arrays 将阵列划分为子阵列,arrays,ruby,Arrays,Ruby,我想从此阵列创建两个子阵列: a = [0, 1, 2, 3, 4, 5, 6] 此数组并不总是包含相同数量的元素,因为它取决于用户输入 例如,在某些情况下: a = [0, 5] 或: 我想把数组分成两个子数组。第一个将包含从1到4(包括)的数字,第二个将包含0、5和6 在第一个示例中,它将是: a = [0, 1, 2, 3, 4, 5, 6] sub_array1 = [1, 2, 3, 4] sub_array2 = [0, 5, 6] {true=>[0, 5]} 在第

我想从此阵列创建两个子阵列:

 a = [0, 1, 2, 3, 4, 5, 6]
此数组并不总是包含相同数量的元素,因为它取决于用户输入

例如,在某些情况下:

a = [0, 5]
或:

我想把数组分成两个子数组。第一个将包含从1到4(包括)的数字,第二个将包含0、5和6

在第一个示例中,它将是:

a = [0, 1, 2, 3, 4, 5, 6]
sub_array1 = [1, 2, 3, 4]
sub_array2 = [0, 5, 6]
{true=>[0, 5]}
在第二部分:

a = [0, 5] 
sub_array1 = []
sub_array2 = [5]
在第三部分:

a = [5, 6, 4]
sub_array1 = [4]
sub_array2 = [5, 6]
依此类推,具体取决于用户输入


我怎样才能做到这一点?

您可以尝试以下方法:

[0,1,2,3,4,5,6].group_by{|x| [0,5,6].include? x}
结果将是一个哈希:

{true=>[0, 5, 6], false=>[1, 2, 3, 4]}
在第二种情况下:

[0,5].group_by{|x| [0,5,6].include? x}
结果将是:

a = [0, 1, 2, 3, 4, 5, 6]
sub_array1 = [1, 2, 3, 4]
sub_array2 = [0, 5, 6]
{true=>[0, 5]}

您可以尝试以下方法:

[0,1,2,3,4,5,6].group_by{|x| [0,5,6].include? x}
结果将是一个哈希:

{true=>[0, 5, 6], false=>[1, 2, 3, 4]}
在第二种情况下:

[0,5].group_by{|x| [0,5,6].include? x}
结果将是:

a = [0, 1, 2, 3, 4, 5, 6]
sub_array1 = [1, 2, 3, 4]
sub_array2 = [0, 5, 6]
{true=>[0, 5]}

首先想到的是

如果你有两个条件(我的意思是如果0,5,6是一个实际条件,而不是排除集),我认为双重迭代不会有什么坏处

a = [0,1,2,3,4,5,6]
sub_array1 = a.select { |x| (1..4).include? x }
sub_array2 = a.select { |x| [0,5,6].include? x }

首先想到的是

如果你有两个条件(我的意思是如果0,5,6是一个实际条件,而不是排除集),我认为双重迭代不会有什么坏处

a = [0,1,2,3,4,5,6]
sub_array1 = a.select { |x| (1..4).include? x }
sub_array2 = a.select { |x| [0,5,6].include? x }

是的!这管用!基本上,因为稍后我需要确定每个子阵列的长度。谢谢X先生,我认为你可以通过在
sub_array1,sub_array2=
前面加上“
并删除“but”以及随后的所有内容来改进你的(好)答案。还有,小字体:你忘了零。是的!这管用!基本上,因为稍后我需要确定每个子阵列的长度。谢谢X先生,我认为你可以通过在
sub_array1,sub_array2=
前面加上“
并删除“but”以及随后的所有内容来改进你的(好)答案。还有,小字体:你忘了零。这真是太可爱了。。但是我认为这不适合我的情况。我相信你可以通过添加
.values
并在前面加上
arr1,arr2=
,来满足OP的反对意见。这很可爱。。但我认为这不适合我的情况。我相信你可以通过附加
.values
并在前面加上
arr1,arr2=
来满足OP的反对意见。