gpt4 book ai didi

list - 在列表列表中查找 x

转载 作者:行者123 更新时间:2023-12-02 05:12:18 25 4
gpt4 key购买 nike

我的作业有点问题。我必须编写代码,它将在列表的列表中找到任何 x(整数或字母)。

我有这样的东西:

 find x xxs = [ [ x | x <- xs, x `elem` xs ] | xs <- xxs ]

Hugs98 毫无异常(exception)地接受了它,但它不起作用。

Input: find 2 [[1,1,1,1],[4,4,4,4],[3,3,3]]
Output: [[1,1,1,1],[4,4,4,4],[3,3,3,3]]

最佳答案

稍微重命名一下,我想你刚刚写了这个:

find x yss = [ [ y | y <- ys, y `elem` ys ] | ys <- yss ]

我不认为那是你的本意。 (在您的代码中,您有两个名为 x 的变量,一个覆盖另一个。)

您的问题没有说明您可以或不允许使用哪些工具。

很明显 elem 在列表中查找内容。我所说的“发现”是指它返回一个 Bool 指示目标项目是否存在。但是如何处理列表的列表呢?

列表理解总是返回一个列表,所以如果您希望 find 返回一个 Bool,您不需要列表理解。

您可以使用 mapelem 应用于列表列表中的每个列表 - 但现在您有一个 Bool 列表。有两种方法可以解决这个问题。一种稍微笨拙的方法是使用 elem 来查看列表是否在任何地方包含 True。但更明智的方法是使用内置的 or 函数,它采用 Bool 列表的逻辑或。 (还有相应的函数。)

find x yss = or (map (x `elem`) yss)

还有另一种方法可以做到这一点;有一个名为 any 的内置函数,它将一个函数应用于一个列表,如果提供的函数曾经返回 True,则返回 True。所以你可以这样做

find x yss = any (x `elem`) yss

关于list - 在列表列表中查找 x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15240715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com