反转列表时出现意外结果

2024-02-26

我需要对下面代码的意外结果进行一些解释,似乎是由于一些错误。

reverse' :: [b] -> [b]
reverse' [] = []
reverse' [x] = [x]
reverse'(x:xs) = last (x:xs) : reverse' xs

*Main> reverse' [0,8,2,5,6,1,20,99,91,1]
[1,1,1,1,1,1,1,1,1,1]

这是因为某些错误吗?


当您得到完全意想不到的结果时,尤其是对于像这样相对简单的函数,手动遵循逻辑会很有帮助。让我们看看这里发生了什么:

reverse' (0:[8,2,5,6,1,20,99,91,1]) = 1 : reverse' xs ==>
1 : (reverse' (8:[2,5,6,1,20,99,91,1]) = 1 : reverse' xs ==>
1 : 1 : (reverse' (2:[5,6,1,20,99,91,1]) = 1 : reverse' xs ==>
...

你可以看到这是怎么回事。问题很简单;您只是在递归步骤中反转了列表的错误部分。您不想像现在那样反转尾部,而是想要反转除最后一个元素之外的所有内容。所以你可以将其修改为如下所示:

reverse' :: [b] -> [b]
reverse' [] = []
reverse' [x] = [x]
reverse' xs = last xs : reverse' (init xs)

返回您期望的内容:reverse' [1,91,99,20,1,6,5,2,8,0] = [0,8,2,5,6,1,20,99,91,1]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反转列表时出现意外结果 的相关文章

  • 将大块位图转换为 3 维位图

    Problem 我需要这个大量的数据作为输入 对于基于C的arduino 这是上面示例中所需格式的大量数据 const byte bitmap 8 8 0xFF 0x81 0x81 0x81 0x81 0x81 0x81 0xFF 0x81
  • 如何在 F# 中将对象转换为泛型类型列表

    在下面的代码片段中 我的目的是将 System Object 可能是 FSharpList 转换为它所持有的任何泛型类型的列表 match o with list lt gt gt addChildList o gt list lt gt
  • 递归地更改R中嵌套列表中的名称

    我在 R 中的嵌套列表结构中有数据 我想使用查找表来更改名称 无论它们在结构中的位置 例子 build up an example x lt as list c a NA x 1 lt vector list 4 names x 1 lt
  • Accelerate 和 Repa 是否有不同的用例?

    我一直在玩 Repa 和 Accelerate 它们都很有趣 但我不知道何时使用其中一个 何时使用另一个 他们是一起成长 是竞争对手 还是只是为了解决不同的问题 Repa 是一个用于高效数组构建和遍历的库 用 Haskell 编程并在 Ha
  • 使用 ocaml List.fold_left 列表中的最后一个元素

    我可以通过以下代码找到列表的最后一个元素 let last xs a list a let rec aux xs prev match xs with gt prev x ys gt aux ys x in match xs with gt
  • Python - 在和不在列表中语法错误

    我正在尝试从另一个现有的浮点数列表构建一个新的浮点数列表 通过示例更容易识别第一个列表的预期内容 price list 39 99 74 99 24 99 49 99 预期的后期功能 print new price list gt gt 2
  • 比较通用列表和数组

    为什么 generic list 比 array 慢 通用列表比数组稍慢 但在大多数情况下您不会注意到 主要与稍微复杂的查找有关 据说 List 在幕后 使用数组 但不能保证以与数组相同的方式将节点保留在相邻内存中 然而 我早在 2005
  • Haskell 中函数和函子有什么区别?只有定义吗?

    在 Haskell 中 当编写函数时 这意味着我们将某个东西 输入 映射到另一个东西 输出 我尝试 LYAH 来理解 Functor 的定义 看起来和普通 Functor 一样 函数被称为函子有什么限制吗 Functor 是否允许有 I O
  • 在 C# 中枚举时从 List 中删除项目的智能方法

    我有一个经典的案例 尝试从集合中删除一个项目 同时在循环中枚举它 List
  • R 数据框到嵌套列表

    我想将这种格式的数据帧 tbl 转换为以下嵌套列表 tbllst library tidyr tbl lt tribble Col1 Col2 Col3 Var1 Var1 1 Var1 1 1 Var1 Var1 1 Var1 1 2 V
  • 随机打乱列表[重复]

    这个问题在这里已经有答案了 可能的重复 在 C 中随机化 List https stackoverflow com questions 273313 randomize a listt in c sharp 随机播放 随机重新排列 List
  • Python如何拆分列表列表?

    我有一个清单清单 myList 1 2 3 4 5 6 7 8 9 10 我想将其分成三个单独的列表 每个列表都有自己的名称 a 1 2 3 b 4 5 6 c 7 8 9 10 我该怎么做呢 您可以直接解压它 a b c myList
  • 在 Django 中为多个查询编写视图的最佳方法?

    这是一个简单的问题 我已经组织了我的模型 以便提供给页面的大多数对象都属于一种类型 项目 该模型包含各种属性 可以帮助我以不同的方式提供服务 我有文章和视频 它们由模型上的 类型 字段确定 类型 文章 等 我有一个列表视图 它显示项目模型中
  • Python 中的“Zip”列表字典

    我有一个列表字典 我想将它们合并到一个命名元组列表中 我想要第一个元组中所有列表的第一个元素 第二个元组中的第二个元素 依此类推 Example key1 1 2 3 key2 4 5 6 key3 7 8 9 我希望生成的列表如下所示 k
  • 计算 List 中相似的相邻项目数

    我试图在列表中找到相似的相邻项目并计算其数量 例如 List
  • 检查多个位置的值并仅在源唯一时返回匹配项

    假设我有一个清单Vendors 阿斯达 乐购 Spar 我有一个清单Sources 或者这个类比中的供应商 家乐氏 Kellogg 吉百利 Cadbury 雀巢 Nestle 强生 Johnsons 帮宝适 Pampers Simple 等
  • 如何让 Show 显示函数名称?

    作为一个让我熟悉 Haskell 的简单练习 在 Youtube 上闲逛并偶然进入美国倒计时游戏节目之后 我想为数字游戏制作一个求解器 你得到 6 个数字 需要将它们与 为了得到给定的结果 到目前为止我所得到的是非常脑死亡的 let ope
  • 为什么 Parsec 的 sepBy 停止并且不解析所有元素?

    我正在尝试解析一些逗号分隔的字符串 该字符串可能包含也可能不包含具有图像尺寸的字符串 例如 hello world 300x300 good bye world 我写了下面的小程序 import Text Parsec import qua
  • Java:如何实现3和?

    我正在研究 3 Sum 来自己实现它 并遇到了以下规则的实现 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 注意 三元组 a b c 中的元素必须按非降序排
  • 在 Python 中使用 .split() 和 .join()

    我目前正在 Treehouse 中学习一些 Python 但我遇到了这个挑战 并且不知道我做错了什么 挑战分为三个部分 如下所示 包含提示和我编写的代码 我好像在第三部分犯了错误 Part 1 我想是时候吃点零食了 幸运的是 我有一串各种各

随机推荐

  • 以编程方式将文件检入 TFS 的结果超出预期

    因此 我有一个 NET 应用程序 它会生成一系列文件 将它们输出到本地目录 然后确定是否需要更新现有文件或将新文件添加到 TFS Team Foundation Server 项目中 我的本地计算机上有一个工作区 并且有 10 个不同的工作
  • 注释随情节表达而变化?

    假设我想制作一个像这样的子图 其中每个方面都有自己的 y 尺度 import plotly express as px fig px scatter px data iris x sepal length y sepal width fac
  • UnicodeEncodeError:“ascii”编解码器无法对位置 20 中的字符 u'\xa0' 进行编码:序号不在范围内(128)

    我在处理从不同网页 在不同站点上 获取的文本中的 unicode 字符时遇到问题 我正在使用美丽汤 问题是错误并不总是可重现的 它有时可以处理某些页面 有时 它会通过抛出一个UnicodeEncodeError 我已经尝试了几乎所有我能想到
  • 设备或资源在容器中从头开始忙于 alpine,但在 ubuntu 上却不忙

    我编辑了问题 但我的问题表现在高山容器中 我现在从头开始在容器中遇到同样的问题 这是同一个问题 但范围更窄一些 正如标题所描述的 我在 Ubuntu 容器中有一个工作可执行文件 我用它来构建我的应用程序 但是一旦我将其复制到 Alpine
  • 如何使用 Rails、Cucumber 和 Capybara 测试 Dropzone.js 上传?

    我有一个使用 Cucumber 和 Capybara 进行测试的 Rails 项目 我有一个使用 Dropzone js 的文件上传页面 我的上传使用对话框或拖放效果很好 测试是另一回事 我的表单中有以下字段
  • 有没有用R写的遗传编程代码[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对进化算法很感兴趣 我已经用 R 测试了遗传算法 但有人尝试过遗传编程吗 你知道吗 某个地方是否有用
  • 为什么 C# 不提供类似于 C++ 的常量性?

    C 中的引用与 C 中的引用非常相似 只不过它们是垃圾收集的 为什么 C 编译器支持以下内容如此困难 成员函数标记const 对标记的数据类型 字符串除外 的引用const 通过其中仅const可以调用成员函数吗 我相信如果 C 支持这一点
  • 从 Python 运行 m 文件

    pymat 似乎不适用于当前版本的 matlab 所以我想知道是否还有另一个等效的版本 我还没有找到 理想的要点是从 python 2 6 运行一个 m 文件 像 scipy 这样的替代方案不适合 因为我认为它们不能运行 m 文件中的所有内
  • 如何在 Saxon 中使用 XPath 3.1?

    我当前使用 XPath 3 1 语法 但由于某种原因 Saxon 输出错误 To use XPath 3 1 syntax you must configure the XPath parser to handle it 我该怎么做呢 非常
  • LINQ 选择间隔 X 分钟的记录

    我有一个简单的表格来记录输入日期 我想选择相隔 X 分钟的记录 IMAGE LOCATION IMAGE DATE 2227 jpg 08 03 2014 22 27 47 2228 jpg 08 03 2014 22 28 48 2229
  • 如何在我的小程序中使用 JXMapViewer?

    我想编写一个必须使用缩放 平移工具渲染地图图像的小程序 我发现 JXMapViewer 可以帮助我 我该如何使用它 我在哪里可以找到相关文档 帮助我编写一个小程序 请求我的图像服务器提供要渲染的图块 图像服务器怎么样 帮助我 JXMapVi
  • Android 模拟器错误:std::bad_alloc

    我正在使用 Eclipse Juno 和 Android 模拟器 SDK Tools 21 1 并且多次遇到此错误 嗯 6 小时内出现两到三次 2013 03 22 11 41 19 Emulator terminate called af
  • Apache proxypass 缓存的 IP 地址

    我使用 Apache Web 服务器 2 4 通过 proxypass 指令将传入的 HTTP 请求代理到我们的后端服务器 我还通过 Apache 传递来自后端服务器的传出请求 再次使用 proxypass 例如 lt Location o
  • 在 NiFi 处理器“InvokeHTTP”中,您在哪里编写 POST 请求的正文?

    在发布有关 Apache NiFi InvokeHTTP 的问题之前 我已经浏览了所有其他问题及其答案 但我仍然不确定我应该拥有的最佳流程 我的情况如下 1 从 Apache Kafka 我获取原始元数据 2 使用EvaluateJSONP
  • 使用 React-Native 监听 Android 上的传入链接

    我可以使用链接库通过react native监听和处理IOS上的传入链接 https facebook github io react native docs linking html https facebook github io re
  • 如何在java中验证unix时间戳?

    我需要验证给定的输入字符串是否有效Timestamp以毫秒为单位 例如 如果给定Timestamp String time 1310966356458 那么它应该返回true if String time 1000 那么它应该返回 fals
  • 我可以通过在 Airflow 中向运算符添加更多 cpu 来提高处理速度吗?

    In airflow cfg有一个部分称为 operators where default cpus被设置为1 and default ram and default disk都设置为512 我想了解如果增加这些参数是否会提高处理速度 我查
  • 基于 JWT 的 标签身份验证?

    假设我有一个单页面应用程序 它使用 JWT 令牌对后端 REST api 进行身份验证 我在执行 REST 请求时在 http 标头内传输 JWT 令牌 到目前为止 一切都很好 现在 假设我想从服务器下载图像 并且我希望该图像只能由经过身份
  • 替换文件路径中的分隔符

    我正在 VS 2008 中开发一个 C Web 应用程序 我让用户选择一个输入文件 然后将文件路径存储在一个字符串变量中 但是 它将这条路径存储为 C folder 所以我的问题是如何将此文件路径转换为单个 谢谢大家的帮助 请原谅我 因为我
  • 反转列表时出现意外结果

    我需要对下面代码的意外结果进行一些解释 似乎是由于一些错误 reverse b gt b reverse reverse x x reverse x xs last x xs reverse xs Main gt reverse 0 8 2