删除元组中的第二个元素

发布于 2024-12-07 02:19:58 字数 333 浏览 1 评论 0原文

我有一个看起来像这样的元组列表。

[ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ]

我的目标是让[1,2,3,4,5]摆脱困境。

我尝试使用 mapfilter 删除所有 Boolfilter 也删除了元组。如果我可以删除每个元组中的 Bool ,那么我可以使用循环将每个元组的 fst 分配给新的空列表吗?

I have a list of tuples that look like this.

[ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ]

My goal is so get [1,2,3,4,5] of out that mess.

I tried to use map and filter to remove all the Bools but filter also removed the first element in the tuple. If I can remove the Bools in each tuple then I can maybe use a loop to assign fst of each tuple to a new empty list?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

メ斷腸人バ 2024-12-14 02:19:58
f :: [[(a, b)]] -> [a]
f = concatMap (map fst)

那么 f [ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ][1 ,2,3,4,5]

f :: [[(a, b)]] -> [a]
f = concatMap (map fst)

Then f [ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ] is [1,2,3,4,5].

花海 2024-12-14 02:19:58

或者使用列表理解:

f xss = [fst x | xs <- xss, x <- xs]

Or with list comprehensions:

f xss = [fst x | xs <- xss, x <- xs]
嘿哥们儿 2024-12-14 02:19:58

试试这个(已编辑,感谢 Michael Kohlpat 的评论):

fun :: [[(a,b)]] -> [a]
fun = map fst . concat

然后在 GHC 中:

*Main> let l = [ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ]
[[(1,True),(2,True)],[(3,False),(4,False),(5,False)]]
*Main> fun l
[1,2,3,4,5]

Try this (edited, thanks to Michael Kohl's and pat's comments):

fun :: [[(a,b)]] -> [a]
fun = map fst . concat

Then in GHC:

*Main> let l = [ [(1,True),(2,True)] , [(3,False),(4,False),(5,False)] ]
[[(1,True),(2,True)],[(3,False),(4,False),(5,False)]]
*Main> fun l
[1,2,3,4,5]
浅笑依然 2024-12-14 02:19:58
foldl1 (\acc x -> acc ++ x)  [a | b <- lst, let a =  map fst b]
foldl1 (\acc x -> acc ++ x)  [a | b <- lst, let a =  map fst b]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文