使用列表推导式将元组列表转换为其元素列表

3

我目前正在为十月份的考试学习,并遇到了一个似乎无法找到好的解决方案的问题。

我想要读取一个整数元组列表,例如:[(1,2),(3,4),(5,6),..],并希望列表推导式返回[1,2,3,4,5,6,..]。

以下代码可以正常工作,但我希望它在一个列表推导式中完成。

func :: [(Integer, Integer)] -> [Integer]
func xs = concat [ [x,y] | (x,y) <- xs ]

我该怎么做才能让这个工作起来?
1个回答

7

您可以在列表推导式的右侧使用额外迭代,例如:

func :: [(a, a)] -> [a]
func xs = [ xi | (x1, x2) <- xs, <b>xi <- [x1, x2]</b> ]

因此,我们编写列表推导式的方式就像人们在命令式编程语言中编写嵌套循环一样。

3
我之前见过这个,但实际上没能弄清背后的逻辑。非常感谢,我会稍微尝试一下这个!! - Marcel Braasch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接