ene*_*ene 2 wolfram-mathematica nested-lists conditional-statements
假设我有一个清单:
list=Table[{RandomReal[],RandomReal[],RandomReal[]}, {i,1,100}];
Run Code Online (Sandbox Code Playgroud)
我想根据条件制作一个新的清单.现在我已经看到我应该使用该Select函数,但我不明白如何定义选择应该基于嵌套列表的某些元素的条件.
有人问了一个类似的问题,我喜欢的答案是:
data = {{0,2},{2,3},{4,3},{5,4},{8,4}};
filtered = Select[data, First[#]>3&];
Run Code Online (Sandbox Code Playgroud)
但是,只有在子列表的第一个元素上设置条件时,这才有效.就我而言:
Select[list,0.2>First[#]>0.1&]
Run Code Online (Sandbox Code Playgroud)
给列表中的所有成员1.子列表的元素在0.1和0.2之间.但是,如果我想根据子列表的第二个元素进行选择,或者通常对第n个元素进行选择呢?
另外,元素组合的示例将是很好的,例如,子列表的前2个元素的总和小于0.5.
Sza*_*lcs 13
首先,生成列表更容易:
list = RandomReal[1, {100, 3}];
Run Code Online (Sandbox Code Playgroud)
你可以使用Part(参见文档!!),这相当于[[ ]]语法,采取nth元素.例如,这选择具有大于0.1的第二元素的那些项目.
Select[list, #[[2]] > 0.1 &]
Run Code Online (Sandbox Code Playgroud)
或者使用
Cases[list, l_ /; l[[2]] > 0.1]
Run Code Online (Sandbox Code Playgroud)
要么
Cases[list, {_, y_, _} /; y > 0.1]
Run Code Online (Sandbox Code Playgroud)
我建议您浏览文档中的教程,尤其是关于列表操作的部分.