2011-10-25 66 views
1
[nested_list,條件]

比方說,我有一個列表:選擇在數學

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個元素進行選擇,該怎麼辦?
另外一個組合元素的例子會很好,例如,子列表的前兩個元素的總和小於0.5。

+0

請驗證上一個問題的鏈接。 –

+0

@belisarius我修復了它。 – enedene

回答

12

首先,生成列表更容易爲:

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

您可以使用Part (see the docs!!),這相當於[[ ]]語法,採取n個元素。例如。這將選擇具有大於0.1的第二個元素的項目。

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

或者使用

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

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

我建議你探索教程的文件中,特別是關於list manipulation的部分。