我有兩個列表操作,我想要求幫助。我實施它們的方式不是很優雅,所以我想向您學習專家。mathematica中的兩個列表操作
1)假設我有兩個列表,一個是{{0,2,4},{1,3,2},{2,0,4}}
,另一個是{{1,3,7},{2,4,6},{3,1,9}}
。我想要基於這個值,或者基於某個標準來過濾第一個列表,然後在第二個列表中獲取相應的元素。例如,基於非零值,我想要得到{{3,7},{2,4,6},{3,9}}
。基於大於2的條件,我想獲得{{7},{4},{9}}
。
2)我有一個列表,如{{{1,2},{1,1}},{{1,3},{2,4}},{{1,2},{2,3}},{{1,4},{3,3}}}
。我想形成{{{1,2},{{1,1},{2,3}}},{{1,3},{{2,4}}},{{1,4},{{3,3}}}
。也就是說,如果第一個元素相同,我想將這些第二個列表分組。我怎樣才能以美麗的方式做到這一點?
非常感謝。
+1。謝謝。對於第一部分,我想到了「Pick」。但它不允許我在那裏放置一個函數(不像'Select'),是嗎?你如何去> 2案例? – 2011-03-09 05:58:16
我剛剛更新了我的答案,您可以在第三個參數的模式中使用條件。我剛剛清理了我的答案,第二部分也有點太... – 2011-03-09 05:59:36
@Qiang @Michael即使Pick沒有第三個參數,你可以用Pick來完成它,如下所示:'Pick [{{1, 3,7},{2,4,6},{3,1,9}}, Positive @ {{0,2,4},{1,3,2},{2,0,0}}} ]'。你可以在更復雜的情況下使用純函數。請注意,您可以在此處使用@,因爲Positive是可列出的。對於不可列出的函數,使用適當級別的Map。 – 2011-03-09 10:35:11