You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中给列表排列结果的每个子列表末尾添加元素的方法

解决方案:用map给排列结果追加元素,无需修改源码

嘿,完全不用折腾去修改permutations的源码哦!Haskell的函数式编程风格刚好能让我们用更简洁的方式实现需求——只需要借助map函数,给每个排列出来的子列表末尾拼接0就可以了。

具体实现步骤

  1. 首先确保你导入了Data.List模块(如果还没导入的话):
import Data.List (permutations)
  1. 直接组合permutations和map来得到目标结果:
map (++ [0]) $ permutations [1,2,3]

原理说明

  • permutations [1,2,3]会生成所有元素的排列列表,也就是你提到的:

    [[1,2,3],[2,1,3],[3,2,1],[2,3,1],[3,1,2],[1,3,2]]

  • map (++ [0])会遍历这个列表里的每一个子列表,把每个子列表和[0]拼接起来,最终就得到了你想要的带末尾0的排列列表:

    [[1,2,3,0],[2,1,3,0],[3,2,1,0],[2,3,1,0],[3,1,2,0],[1,3,2,0]]

封装成自定义函数(可选)

如果你需要反复使用这个功能,也可以把它封装成一个自己的函数:

permutationsWithTrailingZero :: [Int] -> [[Int]]
permutationsWithTrailingZero xs = map (++ [0]) $ permutations xs

之后调用permutationsWithTrailingZero [1,2,3]就能直接得到结果啦。

这种方式完全符合Haskell的函数式设计理念——通过组合现有函数来实现新功能,比修改源码要高效、简洁得多~

内容的提问来源于stack exchange,提问作者UofAStudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:17