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