我是python初学者,到目前为止,我已经读到python没有引用,如果这是真的,那么在python中使用perl代码的等价物是什么?在
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @grps = qw/grp1:1:2:3 grp2:1:2:3 grp3:1:2:3/;
# CREATES AN ARRAY OF REFERENCES TO ARRAYS - AoR2A
my @agrps;
foreach (@grps){
push @agrps, [split(":")];
}
# CREATES AN HASH OF REFERENCES TO ARRAYS (REFERENCES ARE THE SAME AS THEY ARE IN AoR2A ABOVE)
my %hgrps;
foreach (@agrps){
$hgrps{"$_->[0]"} = $_;
}
# THE ELEMENTS CAN BE THEN ACCESSED EITHER VIA ARRAY OR HASH SYNTAX
$hgrps{"grp3"}->[3] = "NEW VALUE 3rd INDEX";
$agrps[2]->[2] = "NEW VALUE 2nd INDEX";
print Dumper @agrps;
print "\n";
print Dumper %hgrps;
上述脚本的输出如下:
^{pr2}$
Perl需要引用有两个原因:
以向后兼容的方式实现复杂(即嵌套)数据结构。E、 g.
$hash{entry} = @array
必须继续为该条目分配数组大小,因此使用数组引用是使用嵌套数据结构的转义:$hash{entry} = \@array
。在这个问题在Python中不存在。数组和其他数据结构已经是引用类型,而不是值类型。
间接的。例如在Perl中我们可以
这在一定程度上可以用数组来伪造,重要的是不要使用值类型。例如,我们需要两个级别来通过引用更改某些值。在
^{pr2}$我们只需要一个级别,如果我们只需要一个指针,可以引用不同的东西。在
如果使用
Ref
类,它可能更具可读性:由于您的问题集中在嵌套数据结构上,因此将代码转换为Python不需要任何“数组引用”。简单的列表就可以了。在
相关问题 更多 >
编程相关推荐