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

Haskell中用列表推导式实现元组列表转普通列表的方法问询

问题解答

1. Python中用列表推导式转换元组列表为普通列表

这个其实很容易实现,咱们用嵌套的列表推导式就能搞定。核心思路就是先遍历元组列表里的每一个元组,再逐个取出元组里的元素,把所有元素收集到一个新列表中。

举个实际的例子,假设你的输入是 tuple_list = [(1,2), (3,4), (5,6)],对应的列表推导式写法如下:

result = [item for tup in tuple_list for item in tup]

运行后 result 就会变成 [1,2,3,4,5,6]。这里的逻辑很直观:外层循环 for tup in tuple_list 逐个取出每个元组,内层循环 for item in tup 遍历当前元组的所有元素,最后把每个 item 都放进结果列表里。

2. Haskell中用列表推导式实现展开二元组列表的函数

当然有啦!针对你给出的二元组列表场景,咱们可以直接用列表推导式写一个符合要求的函数。

函数定义如下:

flattenTupleList :: [(a, a)] -> [a]
flattenTupleList xs = [x | (first, second) <- xs, x <- [first, second]]

咱们拆解一下这个函数的逻辑:

  • 参数 xs 就是你要处理的元组列表
  • 列表推导式里,(first, second) <- xs 会遍历 xs 中的每一个二元组,把元组的两个元素分别绑定到 first 和 second 上
  • 接着 x <- [first, second] 会遍历由这两个元素组成的临时列表,把每个元素 x 收集到结果列表里

测试一下:当你调用 flattenTupleList [(1,2),(3,4),(5,6)] 时,会返回 [1,2,3,4,5,6],完全匹配你的需求。

如果之后需要处理更长的元组(比如三元组),只需要调整推导式的部分逻辑就行,比如对于三元组列表,可以写成 [x | (a,b,c) <- xs, x <- [a,b,c]],核心思路是一致的。

内容的提问来源于stack exchange,提问作者Kubaguette The Testobun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:16:42