perl关于最快合并两个列表(hash)成为一个大的列表(hash)

Perl刚入门,研究Perl数据结构。

问题:合并两个列表(hash)成为一个大的列表(hash)

验证思路:通过使用scalar获取数组中元素的个数来判断是组成一个一维的数组(hash)还是二维的数组(hash)

答案:

数组一

my @array1 = (1,2,3);
my @array2 = ('a','b','c');
my @array3 = [@array1,@array2];
my $array4 = $array3[0];
print scalar @$array4;

# 结果是6
# @array1和@array2保存的是列表,@array3是一个列表,
#但是这个列表保存的是前面两个合并的大列表的地
# 址(一个元素),所以后面需要用$array4 = $array3[0]来取地址。

数组二

my $array1 = [1,2,3];
my $array2 = ['a','b','c'];
my @array3 = [@$array1,@$array2];
my $array4 = $array3[0];
print scalar @$array4;

# 结果是6
# @array1和@array2保存的是列表地址,@array3是一个列表,
# 但是这个列表保存的是前面两个合并的大列表的地
# 址(一个元素),所以后面需要用$array4 = $array3[0]来取地址。
# 其中my @array3 = [@$array1,@$array2];不能写做my @array3 = [$array1,$array2];

哈希一

my %hash1 = (key1 => 1, key2 => 2);
my %hash2 = (key3 => 3, key4 => 4);
my %hash3 = (%hash1, %hash2);
print scalar keys %hash3;

# 结果是4
# %hash1和%hash2保存的是hash,%hash3是一个大的hash
# 通过hash的key的个数来判断。

哈希二

my $hash1 = {key1 => 1, key2 => 2};
my $hash2 = {key3 => 3, key4 => 4};
my %hash3 = (%$hash1, %$hash2);
print scalar keys %hash3;

# 结果是4
# %hash1和%hash2保存的是hash地址,%hash3是一个大的hash
# 通过hash的key的个数来判断。my %hash3 = (%$hash1, %$hash2);不能用my %hash3 = ($hash1, $hash2);

结论:

()可以把多个数组(hash)合并成为一个一维的大数组(hash)

[]可以把多个数组合并成为一个一维的大数组

{}可以把多个hash合并成为一个一维的大hash

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值