2013-02-22 189 views
1

我想消除嵌套列表中每个列表的第三个元素。消除嵌套列表中每个列表的元素

例如,

lst = { {1, 0, 0}, {1, 1, 1}, {1, 1, 4} } 

因此,这将成为

{ {1, 0}, {1, 1}, {1, 1} } 

我应该怎么办呢?

+0

你可以写一个循环,并创建只有你正在寻找的值的新嵌套列表。 – 2013-02-22 02:37:44

+0

对不起,我是Mathematica的新手。这正是我想要了解如何去做的。 – fcpenha 2013-02-22 03:01:07

+1

我确定现在你已经阅读了'Cases'的文档,因为我在回答你的上一个问题时使用了它。返回到该文档,您将找到如何使用相同的函数来替换匹配的模式。还有其他方法可以达到相同的结果,尤其是研究' - >'(* alias *'Rule')的文档,但是不要一次性提出一个小问题来停止尝试学习Mathematica;该程序是有据可查的,Wolfram提供了许多教程。 Google领域也是如此。 – 2013-02-22 07:27:14

回答

3

又一个:

lst = #[[1;;2]] & /@ lst 

,或者如果你想从可能更长子列表仅下降的第三个元素:

lst = Drop[#,{3}]& /@ lst 
+0

你为什么说“下降”是为了更长的名单? – fcpenha 2013-02-23 16:16:13

+0

如果你的生存者有4个元素,drop会给你{#1,#2,#4},这是问题中字面意思的问题。第一种溶胶在#2之后全部掉落。 – agentp 2013-02-24 13:08:06

3

很多方法可以做到这一点,例如

lst = {{1, 0, 0}, {1, 1, 1}, {1, 1, 4}}; 

lst = lst[[All, {1, 2}]] 

{{1,0},{1,1},{1,1}}

或者

lst = Transpose[Most[Transpose[lst]]] 

或者,而不调换

lst = MapThread[Delete, {lst, Table[3, {Length[lst]}]}] 
相关问题