list - 在 Raku 中查找列表中第一个出现的 1 位数字

标签 list raku

我有许多不同长度的列表。每个列表都以一些数字开头,这些数字是多位数字,但以重复出现的一位数字结尾。例如:

my @d = <751932 512775 64440 59994 9992 3799 423 2 2 2 2>;
my @e = <3750 3177 4536 4545 686 3 3 3>;
我想在不构建任何循环的情况下找到 1 位数字第一次出现的位置(对于 @d 7 和对于 @e 5)。理想情况下,lambda(或任何其他实用的东西)应该使用诸如 $_.chars == 1 之类的条件遍历列表。一旦满足条件,它应该停止并返回位置。与其返回位置,不如返回列表直到一位数;欢迎更改和即兴创作。怎么做?

最佳答案

您想要 :k first 上的修饰符:

say @d.first( *.chars == 1, :k ) # 7
say @e.first( *.chars == 1, :k ) # 5
first想要查询更多的信息。
要回答问题的第二部分:
say @d[^$_] with @d.first( *.chars == 1, :k );
# (751932 512775 64440 59994 9992 3799 423)
say @e[^$_] with @e.first( *.chars == 1, :k );
# (3750 3177 4536 4545 686)
确保您使用 with确保仅在 first 时才显示切片实际上找到了一个条目。
with想要查询更多的信息。

关于list - 在 Raku 中查找列表中第一个出现的 1 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63768030/

相关文章:

raku - 对聚合中包含的列表感到困惑,也许是上下文问题?

clone - Perl 6 数组克隆何时不是克隆?

linux - 如果列表不为空,list_empty 返回 1(非零)

python - Python 中列表的大小调整因子是多少

Python 使用 list(set(v)) 删除重复项更改数组顺序

raku - 子程序 'say' 未在 CommaIde 上声明

testing - 更改 $*DISTRO 值以进行测试

python - 从字符串到整数的列表理解更改输出

python - 一起打印 4 个列表,元素数量不等

exception - 区分CATCH block 中的异常与失败[RAKU]