在Haskell中提取列表之间的列表元素

mac*_*ian 0 components haskell extract list

我有以下列表:

[[a,b,c],
 [d,e,f],
 [g,h,i]]
Run Code Online (Sandbox Code Playgroud)

并希望获得以下内容(例如,如果我在列表中提取列表的第0个元素):

[[a],[d],[g]]
Run Code Online (Sandbox Code Playgroud)

我已经能够为一个元素(例如([[a,b,c],[d,e,f],[g,h,i]])!!0!!0 = a)做这个,但我似乎无法使该函数适用于该列中的所有元素.

sep*_*p2k 6

您已经知道可以使用!! i获取i列表的第th个元素.那么如何i在列表列表中获取每个列表的第th个元素?通过应用(!! i)列表列表中的每个列表.你是怎么做到的?通过使用map可以将任何函数应用于列表中的每个元素.

因此,通过使用map,(!! i)我们得到一个包含i每行第th列的列表,这将[a, d, g]在您的示例中.从那以后,您可以轻松地获得预期的输出.

虽然如果你想逐列访问你的矩阵,你可能最好转置矩阵一次然后使用转置矩阵.

  • @shintoist:除了经常在CS课程中直接教授的逻辑和其他主题外,线性代数*是迄今为止*程序员要知道的"高级"数学最有用的领域.期望熟悉这些术语,或者至少有足够的认可来在维基百科上查找它们并不是不合理的.只要提到常用术语,程序员的大脑"关闭"绝对没有任何借口. (9认同)
  • 请注意,[transpose](http://en.wikipedia.org/wiki/Transpose)中的链接非常简单:) - 两全其美.对于那些在高中数学课上引起注意的人来说,没有任何杂乱,很容易链接到那些尚未在那里完成的人的权威指南.:) (3认同)