我有一个列表,例如[1,2,3,4,5],其中我不仅需要知道当前元素,还需要知道前一个和后一个元素。是否有可以如下使用的Map函数:
[1,2,3,4,5]
map (\prev cur next -> ...) [1,2,3,4,5]
或者也许你有另一个解决问题的主意?
w80xi6nr1#
您可以将这些列表压缩在一起,并将每个列表中的一个元素删除
>> as = [1..5] >> zipWith3 (\prev cur next -> (prev, cur, next)) as (drop 1 as) (drop 2 as) [(1,2,3),(2,3,4),(3,4,5)]
djmepvbi2#
您可以使用tails,然后分别处理三个项目:
tails
import Data.List(tails) [ … | (x₀ : x₁ : x₂ : _) <- tails [1, 2, 3, 4, 5] ]
例如:
import Data.List(tails) [ (x₀, x₁, x₂) | (x₀ : x₁ : x₂ : _) <- tails [1, 2, 3, 4, 5] ]
因此,这里的(x₀, x₁, x₂)参数将与(1, 2, 3)、(2, 3, 4)和(3, 4, 5)一起工作。
(x₀, x₁, x₂)
(1, 2, 3)
(2, 3, 4)
(3, 4, 5)
2条答案
按热度按时间w80xi6nr1#
您可以将这些列表压缩在一起,并将每个列表中的一个元素删除
djmepvbi2#
您可以使用
tails
,然后分别处理三个项目:例如:
因此,这里的
(x₀, x₁, x₂)
参数将与(1, 2, 3)
、(2, 3, 4)
和(3, 4, 5)
一起工作。