【发布时间】:2019-12-02 01:46:31
【问题描述】:
如何使用 Perl 6 中的“列表理解”创建非平方列表(即平方根不是整数的整数)?我遇到了following code from Rosetta Code,它展示了如何打印非正方形列表。
sub nth_term (Int $n) { $n + round sqrt $n }
say nth_term $_ for 1 .. 22;
我对列表理解的理解是,它是一种声明方式,类似于set-builder notation,用编程语言来描述列表。
到目前为止,我注意到的最接近的事情是使用 for 关键字。但由于这实际上只是一个内联循环,我认为这不是技术上的列表理解,即使它看起来很相似:
my @y = ($_**2 + 1 for 1 .. 10);
但是,我真正想知道的是,是否有一种“列表理解”方式来创建任何数学上可描述的列表,例如非正方形。下面是我如何强制创建一个非正方形列表(最多 30 个):
my @non_squares = grep {sqrt($_) != floor(sqrt($_))}, 1 .. 30;
作为列表理解,我该如何做到这一点?
【问题讨论】:
-
非常混乱的问题,不是很好的答案。我希望有一天能重写它们。