我想知道是否可以在列表理解中将多个元素添加到列表中。
例如,如果我想要一个由数字1到10组成的列表,我可以写:
[k | k <- [1..10]]
但是,还有一种方法可以通过始终在同一步骤中添加k
和 k+1
来实现此目的,并且只采用奇数{{1} }?以下代码无效,但可能更好地解释了我正在尝试做的事情:
k
目前,最接近这一点(我所知道的)如下:
[k, k+1 | k <- [1, 3..10]]
答案 0 :(得分:7)
有一些替代品,其中没有一种明显优于你的建议。
$(document).on('click', '.btn', function (e) {
$(".btn").removeClass("active");
$(this).addClass("active")
});
请注意,concat [ [k, k+1] | k <- [1, 3 .. 10] ]
join [ [k, k+1] | k <- [1, 3 .. 10] ]
[ x | k <- [1, 3 .. 10], x <- [k,k+1] ]
[1, 3 .. 10] >>= (\x -> [x, x + 1])
do x <- [1, 3 .. 10] ; [x, x+1]
,如您的解决方案中所示,如果找到空的列表列表,将使用运行时错误中止该程序。上述替代方案没有这样的问题。