同じオブジェクト(Equal [])のアトミックオブジェクトからなる(おそらく空の)リストに一致するパターンを探していますが、わかりません。どんな助けでも大歓迎です。同一の要素のリストに一致するパターン
7
A
答えて
12
応答のすべてのこれまでのように見えます一致するオブジェクトがアトムである必要があるという要件を逸しています。あなたが使用している可能性がEqual
の意味で同じを定義しない場合
Cases[testList, {a___?AtomQ} /; Equal[a]]
:わずかに変更されたテストリストで
Cases[testList, {(a_?AtomQ) ...}]
あなたは他の方法が表示されます以下は、この行います要求を失敗してください
testList = {{1, 1.0, 1.0}, {a, b, c}, {Exp[Pi] + 1, Exp[Pi] + 1, Exp[Pi] + 1}, {}, {3}};
これらはすべて3番目の要素にも正しく一致しています。
9
これは機能しますか?代わりにPatternTest
の
Condition
を使用して
testList = {
{1, 1.0, 1.},
{a, b, c},
{0, Exp[Pi*I] + 1.0, Sin[Pi]}
}
Cases[testList, _List?(Equal @@ # &)]
+0
なぜか分かりませんが、私は通常、 '_?(cond)'構文を忘れる傾向があります。それを覚えている素敵な例。 –
6
、:(。と空とシングルトンリストをカバーするテストケースのマークのリストに拡大)
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}}
パターンでは、正規表現ですか? – Dan
PatternSequenceを使ってみましたか? http://reference.wolfram.com/mathematica/ref/PatternSequence.html –
@Dan I Mathematicaには_patterns_、つまりMathematicaの言語/データ構造をマッチングするための式があり、 'StringExpression'と' RegularExpression'は_strings_ 。赤みはパターンを参照しているようです。 –