访问&使用Pure Function选择特定的子列表元素

时间:2011-06-03 11:12:22

标签: list function wolfram-mathematica

  • 第一部分:访问

提供:

list = {{z, x, c, d}, {1, 2, 3, 4}}

我想做以下事情:

(#3/2 + #1/3) &[list[[1]]]

遗憾地导致:

enter image description here

虽然我想要的输出是:

enter image description here

获得:

 (#3/2 + #1/3) &[z, x, c, d]
  • 第二部分:条件选择

尝试这样做:

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

如果可能的话,如何用#指定子列表?

回答,由 Leonid 提供(详见下方评论):

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

4 个答案:

答案 0 :(得分:5)

你快到了那里:

(#[[3]]/2 + #[[1]]/3) &[list[[1]]]

#1是函数的第一个参数,#3是第三个参数。你只提供 一个参数,即列表[[1]]。由于列表[[1]]是一个列表,因此它被映射 超过你的功能。  #[[1]]和#[[3]]指定第一个参数的第一个和第三个/元素。

答案 1 :(得分:3)

您可以使用Sequence(#3/2 + #1/3) &[Sequence @@ (list[[1]])]做您想做的事。 Sequence可能非常有用

答案 2 :(得分:3)

有时您可能会发现使用某种符号来提高可读性是有用的。例如,详细阐述马库斯的回答:

list = {{z, x, c, d}, {1, 2, 3, 4}}
third[x_List] := x[[3]];

third@#/2 + First@#/3 &@ First@list
(*
-> c/2+z/3
*)

答案 3 :(得分:3)

首先,您需要Apply(简称@@):

#3/2 + #1/3 & @@ list[[1]]