在 Mathematica 中过滤掉子列表
我是mathematica 的新手用户。这是我的问题:
例如,我有一个嵌套列表:
lst = {{1, 0, 0}, {0, 1, 1}, {2, 0, 1}, {1}, {0,3}}
我只想输出那些元素为0或1的子列表。上面列表的输出应该是:
{{1, 0, 0}, {0, 1, 1}, {1}}
我可以用这个得到满足我的条件的列表:
lst /. x:{(1 | 0) ..} :> x
但是如何才能我明白了该模式的相反吗?像这样:
lst /. x:NOT{(1 | 0) ..} :> Sequence[]
这样我就可以一笔画出结果。
谢谢!
I am a newbie user in mathematica. Here is my problem:
For example, I have a nested list:
lst = {{1, 0, 0}, {0, 1, 1}, {2, 0, 1}, {1}, {0,3}}
I want to only output those sublist whose elements are 0 or 1. The above list's output should be:
{{1, 0, 0}, {0, 1, 1}, {1}}
I can get the list that satisfies my conditions with this:
lst /. x:{(1 | 0) ..} :> x
But how can I get the converse of the pattern? like this:
lst /. x:NOT{(1 | 0) ..} :> Sequence[]
So that i can get the result in one stroke.
thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
开头为:
您可以使用以下内容进行过滤:
或使用以下任一方式获取补码:
或:
Starting with:
You can filter with this:
Or get the complement with either:
or:
对于某些/每个人来说,这是一个很好的应用程序:
因此,首先创建一个函数来检查子列表中的所有零/一:
然后过滤列表列表以查找通过测试的子列表:
或者,作为单行:
This is a nice application for some/every:
So first make a function that checks a sublist for all zeroes/ones:
Then filter your list-of-lists for sublists that pass the test:
Or, as a one-liner: