包含任何内容 ([_]) 和任何内容 (_) 的列表有什么区别

2024-01-03

我试图完成以下任务,如果我有两个列表,L1 和 L2,我希望结果 (R) 是 L1 中 L2 的“减法”。

Example:

L1 = [1,2,3]
L2 = [2,3,4,5]

R = [1]

我能够做到这一点,但我不知道两者之间有什么区别_ and [_].

如果我这样做:

diferencia([],_,[]).
diferencia([X|Tail],L2,R):-
    member(X,L2),
    diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
    not(member(X,L2)),
    diferencia(Tail,L2,R).

它有效,如果我这样做,它会给我错误:

diferencia([],[_],[]).
diferencia([X|Tail],L2,R):-
    member(X,L2),
    diferencia(Tail,L2,R).
diferencia([X|Tail],L2,[X|R]):-
    not(member(X,L2)),
    diferencia(Tail,L2,R).

我会假设一个包含任何内容的列表[_]应该可以工作,因为 L2 始终是一个列表。


实际上,_匹配一个变量并且仅匹配一个变量。在这里,您希望它匹配2, 3, 4, 5(四个变量)。不可以。它只能匹配[2, 3, 4, 5](列表)。你必须写[_|_]使头部和尾部匹配([2|[3, 4, 5]])

Or [_, _, _, _, _, _, ...]与数量_是列表中项目的确切数量,以便每个元素都与匿名变量正确匹配。

要记住的基本事情是_只是一个普通变量。如果您很难记住它,只需明确的名称,例如_Head or _Accumulator,这样当你编写代码时,你就会意识到你操作的东西实际上是一个变量,只是你不关心它(以 a 开头的变量)_至少在 swi-pl 中不会产生单例变量警告,因此它们可以代替_以获得更好的整体清晰度)。

Edit:另一种说法是,在你的标题中,你认为_是什么。但任何事物都可以是无,任何事物都可以是很多东西。_只能是一件事。这就是为什么它不起作用:]

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

包含任何内容 ([_]) 和任何内容 (_) 的列表有什么区别 的相关文章

  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • 通过递归扩展 Prolog 目标?

    我 最终 实现了一些目标 这些目标将根据开始由 开始之后 and duration 然而 计划目标仅接受规定数量的任务 我想扩展计划目标的功能以接受单个列表并在计划时迭代该列表 不幸的是 我认为这将需要与can run and 冲突目标如下
  • 查找相邻成员

    我必须找出列表中的两个成员是否相邻 限制是使用append 3谓词 到目前为止 我已经完成了下面的操作 如果它是真的 它就有效 否则我得不到答案 就像它永远运行一样 adjacent X Y L append L1 X Y T1 appen
  • 如何在 ISO Prolog 中定义(和命名)相应的安全术语比较谓词?

    标准术语顺序 ISO IEC 13211 1 7 2 术语顺序 针对所有术语 包括变量 进行定义 虽然这有很好的用途 想想实施setof 3 这使得 8 4 术语比较中内置函数的许多其他干净且合乎逻辑的使用成为声明式噩梦 到处都是 imps
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 为什么 list() == 1 给出结果,而 list() > 1 给出错误? [复制]

    这个问题在这里已经有答案了 即使这些比较没有意义 为什么 list 1 return False but list gt 1 return gt not supported between instances of list and int
  • Prolog - 如何从输入文件的给定列表中创建变量列表?

    我有一个输入谓词将文件作为列表读取 输入 文件名 列表 该列表的格式将是 9 字面意思就是下划线字符 在这里 不是一个通配符 问题是我如何编写谓词 pred List List2 然后转换所有 进入变量但保留9还在同一个位置吗 所以如果我输
  • 使用 prolog 添加另外两次出现

    我有一个清单 a b a a a c c 我需要为每个元素添加两次以上的出现 最终结果应该是这样的 a a a b b b a a a a a c c c c 如果列表中有一个与下一个项目相同的项目 那么它会继续下去 直到出现一个新项目 当
  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • 将元组列表转换为字符串 Python

    例如 我用 python 编写了一个返回列表的函数 1 1 2 2 3 3 但我希望输出为字符串 这样我就可以用另一个字符替换逗号 这样输出就是 1 1 2 2 3 3 有什么简单的方法可以解决这个问题吗 感谢您提前提供任何提示 这看起来像
  • Python 的二进制字符串列表

    我有一个像这样的二进制字符串 1100011101 我想将其解析为一个列表 其中每个 1 或 0 块都是列表中的单独值 例如 1100011101 变成 11 000 111 0 1 您可以通过使用正则表达式而不是从中获得一点 次要 性能g
  • 在Python中将列表附加到自身[重复]

    这个问题在这里已经有答案了 我想将一个列表附加到自身 我认为这会起作用 x 1 2 y x extend x print y 我想回来 1 2 1 2 但我得到的只是内置的None 我究竟做错了什么 我正在使用Python v2 6 x e
  • 采用迭代器而不是可迭代的方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 关于迭代器和可迭代对象 仅是我的观察 如果我错了 请纠正我 大多数构造函数 数组类型 将迭代器作为质量构造函数 迭代器是显式创建的 或
  • 存储整数列表的最有效方法

    我最近一直在做一个项目 其中一个目标是使用尽可能少的内存来使用 Python 3 存储一系列文件 除了一个整数列表之外 几乎所有文件都占用很少的空间 大致333 000整数长且整数可达约8000在尺寸方面 我目前正在使用pickle存储列表
  • 发布到列表 MVC3

    我试图让我的视图将列表发布回操作 但它始终为空 所以我的模型有一个 WeightEntry 对象列表 运动模型 public class Exercise public List
  • 打乱列表并返回副本

    我想对数组进行洗牌 但我找到的只是类似的方法random shuffle x from 在 Python 中随机化字符串列表的最佳方法 https stackoverflow com questions 1022141 best way t
  • Prolog中计算数字是否为素数

    我正在尝试计算输入是否是素数 但出了问题 这是我的代码 primeNumber X prime prime A 1 prime prime A B R is A mod B R 1 R A prime prime X B B lt A Ne
  • Python 中列表的线性合并

    我正在努力通过Google 的 Python 课堂练习 http code google com edu languages google python class index html 其中一个练习是这样的 给定两个按升序排序的列表 创建
  • Python 列表切片语法的使用没有明显的原因

    我偶尔会看到 Python 代码中使用的列表切片语法如下 newList oldList 当然 这与以下内容相同 newList oldList 或者我错过了什么 浅拷贝 http en wikipedia org wiki Deep co

随机推荐

  • 如何在 Swift 中将字典切片转换为字典

    我正在尝试转换myDictionary dropFirst 一本新字典缺少一个键 我不在乎是哪一个 dropFirst 返回一个切片 我想要一本与以下类型相同的新词典myDictionary 您可以将数组切片转换为数组 如下所示let ar
  • 类型“Observable<{}>”不可分配给类型“Observable”

    前言 我知道还有很多其他问题也有同样的错误 但我似乎仍然无法弄清楚我自己的问题 我有一个简单的服务和另一个简单的组件 我正在尝试非常严格地遵循 angular2 英雄教程 这是我的代码 位置 ts export class Location
  • 使用 Segue 发送变量

    我正在开发一个简单的 iOS Swift 应用程序 该应用程序有 2 个视图控制器和一个已编程为连接到另一个视图控制器的按钮 如下所示 IBAction func pushMe sender AnyObject self performSe
  • 将列表中的学生姓名和年龄添加到列表框

    我有 3 个textboxes我可以在哪里进入Name Surname and Age 当我按下按钮1后 它会生成一个具有这些属性的新学生 如何将具有所有 3 个属性的学生添加到ListBox 看起来像这样 姓名 姓氏 年龄1 约翰 史密斯
  • WP7 - 在“重建”时擦除独立存储设置

    我刚刚发现 困难的方法 如果您在 Visual Studio 中执行 重建 或 清理 gt 构建 后将应用程序部署到设备 您的应用程序将首先被卸载 然后重新安装 导致隔离的存储文件被擦除 应用程序部署工具似乎总是会卸载 重新安装 无论它是否
  • Java Instant.parse 日期 java 8

    我有一些旧版 KML 文档 其中包含时间戳条目 为什么使用 Instant 解析时以下日期无效 这两种方法都假设解析 ISO 8601 格式的日期 字符串日期字符串 2017 12 04T08 06 60Z Using java time
  • 您能否将 Google Cloud 网络控制台登录限制在某个 IP 地址范围内?

    我在使用 Google Cloud Platform 特别是我工作的 IT 安全部门的 Big Query 时遇到了一些阻力 争论的焦点是任何人都可以从任何地方登录 有什么办法只允许来自特定 IP 范围的 GCP 访问吗 或者是否有其他方法
  • Azure 函数请求正文为 xml 而不是 json

    我正在跟进这个例子 https learn microsoft com en us azure azure functions functions test a function在 Azure 函数中创建 javascript 函数并使用
  • php 的 mysql_real_escape_string() 的等效 JavaScript 代码是什么?

    等效的 javascript 代码是什么mysql real escape string 基于PHP 文档 http php net manual en function mysql real escape string php该方法的作用
  • 如何在 felm() 函数之后绘制交互的边际效应

    我基于具有一堆单位固定效应的 巨大 面板数据进行了回归 所以我使用了包 lfe 中的函数 felm 此外 我在回归中有两个连续变量的交互项 但是 当绘制 x 对 y 的边际效应如何随 x2 变化时 felm 生成的对象似乎通常与大多数绘图函
  • 为什么我使用 context().method() 违反了状态图断言?

    我已经为一个项目开发了一些概念代码 我很快就会从事该项目 该项目适合于状态机设计 我认为 boost statechart 会做得很好 然而 当我尝试使用 context 时 我遇到了障碍 这是一个示例 我很乐意提供更多代码 但我认为这是相
  • 如何“安全”地使用 window.history.pushState

    我想使用window history pushState 支持浏览器的功能 不幸的是我在 Firefox 上遇到错误 类型错误 history pushState 不是函数 如何才能避免这种情况呢 虽然我没有在 JavaScript 中测试
  • Swift 1.2 中的可变@autoclosure ?

    现在 autoclosure是参数声明的一部分而不是类型 如何声明函数采用可变数量的自动闭包 Before public func coalesce
  • matplotlib show() 不能工作两次

    我有一个奇怪的问题 与 matplotlib 有关 如果我运行这个程序 我可以多次打开和关闭同一个图形 import numpy from pylab import figure show X numpy random rand 100 1
  • 高流量网站的 Facebook 身份验证:空访问令牌、空 /me

    目前 我们有一个在 Facebook 选项卡上运行的应用程序 该应用程序收到了大量流量 每隔几秒钟就有人注册 而且大多数都成功了 但是我遇到了以下问题 根本没有收到访问令牌 空响应 没有错误 或者如果收到 则对 me 的 API 调用失败
  • 检测 iOS UIDevice 方向

    我需要检测设备何时处于纵向 以便我可以发出特殊的动画 但我不希望我的视图自动旋转 当设备旋转为纵向时 如何覆盖自动旋转的视图 我的应用程序只需要以横向显示它的视图 但如果我希望能够检测到纵向旋转 我似乎也需要支持纵向 尝试在应用程序加载或视
  • 将 JSONB 转换为缩小(无空格)字符串

    如果我转换一个文本值 例如 a b 到 JSONB 然后返回到文本空格 之间添加 和 psql gt select a b jsonb text text a b 1 row 如何将文本转换为 jsonb 以便我可以使用 jsonb 函数
  • C#中如何检查字符串的最后一个字符?

    我想在 C 中找到字符串的最后一个字符 然后将其放入if陈述 然后 如果最后一个字符等于 A B 或 C 则应执行某个操作 C 中如何获取字符串的最后一个字符 Use the EndsWith 字符串方法 if string EndsWit
  • PHP:“即时”向电子邮件添加附件?

    我刚刚让PHP的邮件功能在我的测试环境中正常工作 我有一个输出许多字符串的 PHP 应用程序 将这些字符串转换为附件真是太好了 TXT 文件 在电子邮件中 无需先将它们存储在磁盘上并重新读回 这在 PHP 中可能吗 是的 这是可能的 您只需
  • 包含任何内容 ([_]) 和任何内容 (_) 的列表有什么区别

    我试图完成以下任务 如果我有两个列表 L1 和 L2 我希望结果 R 是 L1 中 L2 的 减法 Example L1 1 2 3 L2 2 3 4 5 R 1 我能够做到这一点 但我不知道两者之间有什么区别 and 如果我这样做 dif