有人可以建议如何构建模式以从此数据中提取连续数字的第一个列表吗?
sample = {52.2624, 54.4003, 60.7418, 61.3801, 62.6397, 61.7992,
63.2282, "", "", "", "", "", "", "", "", "", "", 62.3921, 61.897,
60.299, 59.053, 61.3778, 64.3724, 63.4251, 78.1912, 79.7451,
80.4741, "", 81.324, 79.9114, 93.7509};
我尝试了像
sample //. {useable : _?NumberQ .., ___} -> {useable}
这样的变体都无济于事。useable = TakeWhile[sample, NumberQ]
效果很好,但是我想知道如何使用模式匹配。
最佳答案
尝试保留您的逻辑:
sample /. {useable : Longest[_?NumberQ ..], ___} -> {useable}
如果您想要最长的数字序列:
sample /. {___, useable : Longest[_?NumberQ ..], ___} -> {useable}
编辑
要获取所有数字序列:
Cases[SplitBy[sample, NumberQ], {_?NumberQ ..}]
或者
Last@Reap[sample //. {x___, useable : Longest[_?NumberQ ..], y___} :>
(Sow@{useable}; {x}~Join~{y})]
关于wolfram-mathematica - 重复图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431031/