19
使用嵌套数组操作实现算法通常很有用。例如,要查找单词的列表,每个给定的字符开始数,你可以做这样的事情在Python:
>>> a = ["foo","bar","baz"]
>>> map(lambda c: len(filter(lambda w: w.startswith(c), a)), ('a','b','c','d','e','f'))
[0, 2, 0, 0, 0, 1]
在表达w.startswith(c)
它是微不足道的两个循环迭代变量之间的区别w
和c
,因为它们有不同的名称。
在Perl中,我愿做这样的事情:
@a = ("foo", "bar", "baz");
map length(grep $_ =~ /^$_/, @a), ('a','b','c','d','e','f')
然而,与此明显的问题是$_
仅指最里面grep
迭代变量(适用于$_
上左侧),而不是外侧map
(适用于/^$_/
)。在Perl中避免这个问题的惯用方法是什么?
优秀的,这就行了。也感谢提醒使用标量而不是长度! – 2009-02-12 22:25:43