【发布时间】:2016-11-09 04:53:28
【问题描述】:
我正在使用 haskell 编码,想知道如何在多个列表中找到某个元素。
举个例子:
x = [(1,2,3,4,5),
(3,4,5,6,6),
(5,6,2,1,1),
(1,2,5,6,2)];
假设我想找到每个列表的第三个元素。
所以程序会打印出 4,6,1,6
我知道!!但是当我做类似 x 的事情时! 3,打印出第三行(1,2,5,6,2)。
我想要它,所以它打印出每个列表的第三个元素。
【问题讨论】:
-
您确定您的意思不是要列出列表吗?现在,您有一个元组列表。除此之外,Haskell 中没有通用的方法从给定的元组和索引中提取元素。你能做的最好的就是
map (\(_,_,_,e,_) -> e) x。 -
所以
x !! 3会得到x的第三个索引,而不是x的每个元素的第三个索引?如何将函数应用于列表的每个元素? -
@Alec 没有办法遍历每个列表并获得某个元素吗?
-
@ShawnSmith 有一种方法可以通过 lists 来获取某个元素(它是您已经找到的
(!!)运算符),但是您有一个元组列表。注意(1,2,3,4,5)和[1,2,3,4,5]之间的区别(尝试在 GHCi 中查看它们的类型)。 -
@Alec 提供给我的数据基本上就像我在问题中的唯一数据。这是一个很大的列表,我只是缩短了它。也许没有办法得到那个特定的元素,但是我们可以检查一下 6 是否在元素 3 中?