匹配相同元素列表的模式

发布于 2024-11-16 15:23:46 字数 72 浏览 2 评论 0原文

我正在寻找一种与由相同(在 Equal[] 意义上)原子对象组成的(可能为空)列表匹配的模式,但我无法弄清楚。任何帮助将不胜感激。

I am looking for a pattern that matches a (possibly empty) list consisting of identical (in the sense of Equal[]) atomic objects, but I can't figure it out. Any help would be greatly appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

似梦非梦 2024-11-23 15:23:46

到目前为止,所有响应似乎都没有满足匹配对象必须是原子的要求。下面的代码做到了这一点:

Cases[testList, {a___?AtomQ} /; Equal[a]]

如果您没有在Equal的意义上定义identical,您可以使用:

Cases[testList, {(a_?AtomQ) ...}]

通过稍微修改的测试列表,您将看到其他方法失败要求

testList = {{1, 1.0, 1.0}, {a, b, c}, {Exp[Pi] + 1, Exp[Pi] + 1, Exp[Pi] + 1}, {}, {3}};

它们也都错误地匹配第三个元素。

All of the responses so far seem to have missed the requirement that the objects being matched need to be atomic. The following does this:

Cases[testList, {a___?AtomQ} /; Equal[a]]

If you don't define identical in the sense of Equal you could have used:

Cases[testList, {(a_?AtomQ) ...}]

With a slightly modified test list you'll see other methods fail the requirement

testList = {{1, 1.0, 1.0}, {a, b, c}, {Exp[Pi] + 1, Exp[Pi] + 1, Exp[Pi] + 1}, {}, {3}};

they all incorrectly match the 3rd element too.

江南烟雨〆相思醉 2024-11-23 15:23:46

这对你有用吗?

testList = {
  {1, 1.0, 1.},
  {a, b, c},
  {0, Exp[Pi*I] + 1.0, Sin[Pi]}
}
Cases[testList, _List?(Equal @@ # &)]

Does this work for you?

testList = {
  {1, 1.0, 1.},
  {a, b, c},
  {0, Exp[Pi*I] + 1.0, Sin[Pi]}
}
Cases[testList, _List?(Equal @@ # &)]
远山浅 2024-11-23 15:23:46

使用 Condition,而不是 PatternTest:(

In[31]:= testList = {{1, 1.0, 1.}, {a, b, c}, {0, Exp[Pi*I] + 1.0, 
    Sin[Pi]}, {}, {3}};

Cases[testList, {a___} /; Equal[a]]

Out[32]= {{1, 1., 1.}, {0, 0., 0}, {}, {3}}

并扩展 Mark 的测试用例列表以覆盖空列表和单例列表。)

Using Condition, instead of PatternTest:

In[31]:= testList = {{1, 1.0, 1.}, {a, b, c}, {0, Exp[Pi*I] + 1.0, 
    Sin[Pi]}, {}, {3}};

Cases[testList, {a___} /; Equal[a]]

Out[32]= {{1, 1., 1.}, {0, 0., 0}, {}, {3}}

(and expanding on Mark's list of test cases to cover empty and singleton lists.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文