最近讨论的东西比较多,终于开始出现一些来自搜索引擎的访客
有来自360搜索的也有百度的
相信会慢慢变好。
最近比较忙
- 523066680
- Administrator
- 帖子: 573
- 注册时间: 2016年07月19日 12:14
- 联系:
Re: 最近比较忙
#列表操作
",", sort,reverse,push, pop, shift, unshift, grep, map
##使用 grep 过滤列表
grep 的使用可以分为表达式形式和 block 形式
筛选大于10的数并保存到另一个数组:
```perl
my @input_numbers = (1, 2, 4, 8, 16, 32, 64);
my @bigger_than_10 = grep $_ > 10, @input_numbers;
```
结果为 16, 32, 64
通过隐式引用来筛选末尾含有4的数字:
`my @end_in_4 = grep /4$/, @input_numbers;`
如果测试表达式较为复杂,可以写在一个子例程中,然后通过 grep 调用。
在一组数字中,提取个位十位... 相加 %2 余 1 的项:
```perl
my @odd_digit_sum = grep digit_sum_is_odd($_), @input_numbers;
sub digit_sum_is_odd {
my $input = shift;
my @digits = split //, $input; # Assume no nondigit characters
my $sum;
$sum += $_ for @digits;
return $sum % 2;
}
```
块形式(相比调用子例程的形式,少了 return。在这里使用 return 将退出 grep ):
```perl
my @odd_digit_sum = grep {
my $sum;
$sum += $_ for split //;
$sum % 2;
} @input_numbers;
```
",", sort,reverse,push, pop, shift, unshift, grep, map
##使用 grep 过滤列表
grep 的使用可以分为表达式形式和 block 形式
筛选大于10的数并保存到另一个数组:
```perl
my @input_numbers = (1, 2, 4, 8, 16, 32, 64);
my @bigger_than_10 = grep $_ > 10, @input_numbers;
```
结果为 16, 32, 64
通过隐式引用来筛选末尾含有4的数字:
`my @end_in_4 = grep /4$/, @input_numbers;`
如果测试表达式较为复杂,可以写在一个子例程中,然后通过 grep 调用。
在一组数字中,提取个位十位... 相加 %2 余 1 的项:
```perl
my @odd_digit_sum = grep digit_sum_is_odd($_), @input_numbers;
sub digit_sum_is_odd {
my $input = shift;
my @digits = split //, $input; # Assume no nondigit characters
my $sum;
$sum += $_ for @digits;
return $sum % 2;
}
```
块形式(相比调用子例程的形式,少了 return。在这里使用 return 将退出 grep ):
```perl
my @odd_digit_sum = grep {
my $sum;
$sum += $_ for split //;
$sum % 2;
} @input_numbers;
```
-
- 一代宗师
- 帖子: 930
- 注册时间: 2017年12月25日 11:12
- 联系:
Re: 最近比较忙
人生苦短,
根据相对论,就是忙碌的原因,加速了。
根据相对论,就是忙碌的原因,加速了。
在线用户
正浏览此版面之用户: zzz19760225 和 1 访客