【问题标题】:Select[nested_list, condition] in Mathematica在 Mathematica 中选择[nested_list,条件]
【发布时间】:2011-12-15 03:19:27
【问题描述】:

假设我有一个列表:

list=Table[{RandomReal[],RandomReal[],RandomReal[]}, {i,1,100}];

我想根据条件创建一个新列表。现在我已经看到我应该使用Select 函数,但我不明白如何定义选择应该基于嵌套列表的某些元素的条件。
有人问过类似的question,我喜欢的答案是:

data = {{0,2},{2,3},{4,3},{5,4},{8,4}};
filtered = Select[data, First[#]>3&];

但是,这仅在条件设置在子列表的第一个元素上时才有效。就我而言:

Select[list,0.2>First[#]>0.1&]

给出列表的所有成员,其中 1. 子列表的元素介于 0.1 和 0.2 之间。但是,如果我想根据子列表的第二个元素进行选择,或者一般来说对第 n 个元素进行选择,该怎么办?
还有一个元素组合的例子也很好,例如 sublist 的前 2 个元素的总和小于 0.5。

【问题讨论】:

  • 请验证上一个问题的链接。

标签: wolfram-mathematica conditional-statements nested-lists


【解决方案1】:

首先,生成列表更容易:

list = RandomReal[1, {100, 3}];

您可以使用Part (see the docs!!),相当于[[ ]] 语法,来获取nth 元素。例如。这将选择第二个元素大于 0.1 的那些项目。

Select[list, #[[2]] > 0.1 &]

交替使用

Cases[list, l_ /; l[[2]] > 0.1]

Cases[list, {_, y_, _} /; y > 0.1]

我建议您浏览文档中的教程,尤其是关于 list manipulation 的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多