在Perl中使用列表
我有两份清单a和b,如下所示:在Perl中使用列表,perl,Perl,我有两份清单a和b,如下所示: a = ('church.n.01','church.n.02','church_service.n.01','church.n.04') b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01') 我想使用函数get_relatedness(arg1,arg2)查找a和b的成员之间的关系。如何在Perl中操作a和b,以便使用Perl中的两个嵌套for循环传递a和b之间的所有可能组合 请帮
a = ('church.n.01','church.n.02','church_service.n.01','church.n.04')
b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01')
我想使用函数get_relatedness(arg1,arg2)查找a和b的成员之间的关系。如何在Perl中操作a和b,以便使用Perl中的两个嵌套for循环传递a和b之间的所有可能组合
请帮助我解决这个问题,因为我是Perl新手
my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04');
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01');
use Data::Dumper;
print Dumper [ get_relatedness(\@a, \@b) ];
sub get_relatedness {
my ($c, $d) = @_;
return map { my $t=$_; map [$t, $_], @$d } @$c;
}
输出
$VAR1 = [
[
'church.n.01',
'temple.n.01'
],
[
'church.n.01',
'temple.n.02'
],
[
'church.n.01',
'temple.n.03'
],
[
'church.n.01',
'synagogue.n.01'
],
[
'church.n.02',
'temple.n.01'
],
[
'church.n.02',
'temple.n.02'
],
[
'church.n.02',
'temple.n.03'
],
[
'church.n.02',
'synagogue.n.01'
],
[
'church_service.n.01',
'temple.n.01'
],
[
'church_service.n.01',
'temple.n.02'
],
[
'church_service.n.01',
'temple.n.03'
],
[
'church_service.n.01',
'synagogue.n.01'
],
[
'church.n.04',
'temple.n.01'
],
[
'church.n.04',
'temple.n.02'
],
[
'church.n.04',
'temple.n.03'
],
[
'church.n.04',
'synagogue.n.01'
]
];
要使用两个嵌套循环比较两个数组中的所有元素组合,只需循环一个,对于第一个数组的每个元素,在第二个数组的元素上执行内部循环:
my @a = ('church.n.01','church.n.02','church_service.n.01','church.n.04');
my @b = ('temple.n.01','temple.n.02','temple.n.03','synagogue.n.01');
my $relatedness;
for my $outer (@a) {
for my $inner (@b) {
$relatedness += get_relatedness($outer, $inner);
}
}
你是如何定义关系的?@Vijay:这个问题定义“find relatedness”的意思是“调用函数get_relatedness(arg1,arg2)”。这个问题是可以回答的,不需要知道函数内部发生了什么。