Perl等同于(Python-)列表的理解

前端之家收集整理的这篇文章主要介绍了Perl等同于(Python-)列表的理解前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找在Perl中表达 Python代码片段的方法
data = {"A": None,"B": "yes","C": None}
key_list = [k for k in data if data[k]]  
# in this case the same as filter(lambda k: data[k],data) but let's ignore that

所以看一下这个方法,我只是想要这些值的值是None或undef.看另一种方式,我想要的是简洁的perl等同于list comprehension with conditional.

解决方法

我想你想要 grep
#!/usr/bin/env perl
use strict;
use warnings;

my %data = ( A => undef,B => 'yes',C => undef );

my @keys = grep { defined $data{$_} } keys %data;

print "Key: $_\n" for @keys;

我也认为我打的太慢了,我应该在发布答案之前重新加载页面.顺便说一下,值为0或undef可以是处理空值的好方法,但请确保记住您使用的是什么. Perl中的虚假值和未定义的值是不一样的.要澄清:undef在布尔测试中返回false,但是也是0.如果0是一个有效值,那么你要显式测试定义,而不是简单的真理. (我提到,因为詹姆斯去了0,我走了另一个方式,你可能会或可能不知道是否重要.)

猜你在找的Perl相关文章