Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Perl 在向量末尾添加元素_Perl - Fatal编程技术网

Perl 在向量末尾添加元素

Perl 在向量末尾添加元素,perl,Perl,我想在一个向量的末尾加上数字“1”或“0”,这个向量已经表示了很多元素。假设我有不同长度的2D向量,比如 vector[0][0] = 1 vector[0][1] = 3 vector[1][0] = 2 vector[1][1] = 4 vector[1][2] = 5 我想在每个向量的末尾添加数字1或0(基于if命令);输出应该是: vector[0][0] = 1 vector[0][1] = 3 vector[0][2] = 1 vector[1][0] = 2 vector[1][

我想在一个向量的末尾加上数字“1”或“0”,这个向量已经表示了很多元素。假设我有不同长度的2D向量,比如

vector[0][0] = 1
vector[0][1] = 3
vector[1][0] = 2
vector[1][1] = 4
vector[1][2] = 5
我想在每个向量的末尾添加数字1或0(基于if命令);输出应该是:

vector[0][0] = 1
vector[0][1] = 3
vector[0][2] = 1
vector[1][0] = 2
vector[1][1] = 4
vector[1][2] = 5
vector[1][3] = 0
其中添加的新元素为
向量[0][2]=1
向量[1][3]=0

我想到了这样的事情:

for my $i (0..$#vector) {
    for my $j (0..$#{ $vector[$i] }) {
    if($prob_friendship > (my $random_number=rand()) ) {
        push  @{ $vector[$i][$j] }, 1;
    }
    else {
         push  @{ $vector[$i][$j] }, 0;
        }
    }
}
但是它给了我一个错误
当distributione2.pl第42行第5行使用“strict refs”时,不能使用字符串(“1”)作为数组引用。

有什么帮助吗



$prob\u Friendly
值在keyborad的输入中给出

不需要嵌套循环,只需迭代第一个数组索引

您可以像现在一样使用
$i
进行迭代,然后使用
push@{$vector[$i]},…

或者,如果您实际上不需要知道数组索引(使用@TLP答案的道具),您可以直接迭代存储在
@vector
的第一维度中的各个引用,并在三行中完成整个操作:

for my $ref (@vector) {
    push @$ref, ($prob_friendship > rand()) ? 1 : 0;
}

不需要嵌套循环,只需迭代第一个数组索引

您可以像现在一样使用
$i
进行迭代,然后使用
push@{$vector[$i]},…

或者,如果您实际上不需要知道数组索引(使用@TLP答案的道具),您可以直接迭代存储在
@vector
的第一维度中的各个引用,并在三行中完成整个操作:

for my $ref (@vector) {
    push @$ref, ($prob_friendship > rand()) ? 1 : 0;
}

您可以按如下方式使用阵列参照:

for my $aref (@vector) {      # will iterate over array refs
    if ($prob > rand()) {
        push @$aref, 1;       # dereferencing the aref
    } else {
        push @$aref, 0;
    }
}

您可以按如下方式使用阵列参照:

for my $aref (@vector) {      # will iterate over array refs
    if ($prob > rand()) {
        push @$aref, 1;       # dereferencing the aref
    } else {
        push @$aref, 0;
    }
}

我推荐
push@{$vector[$I]}即使在5.14之后,因为
推送$vector[$i]
是“高度实验性”的,因为它只适用于某些数组。@ikegami在普通的无lessed数组上应该可以,但我已经按照您的建议回到了原始语法。我建议使用
push@{$vector[$I]}即使在5.14之后,因为
推送$vector[$i]
是“高度实验性”的,因为它只适用于某些数组。@ikegami在普通无lessed数组上应该可以,但我已经按照您的建议回到了原始语法。