Clojure 中向量和列表上 conj 的行为差异

2023-11-23

我是 clojure 的新手,最初我正在经历Clojure.org and 作弊簿 .

我想知道不同行为的确切原因是什么conj在列表和矢量上。

(conj [1 2 3] 4)
[1 2 3 4]

(conj (list 3 2 1) 4) 
(4 3 2 1)

当我将它与列表一起使用时,它会在第一个位置添加元素,而使用向量时,它会在最后一个位置添加元素。


The conj程序“根据具体类型在不同的‘位置’添加新元素”。尤其,conj正在为给定的数据结构最有效的位置添加新元素。

在单链表中,插入新元素最便宜的位置是在头部——不需要遍历列表来查找插入点,只需将新元素与列表的第一个元素连接起来即可。

在向量中,最便宜的位置是在末尾 - 无需移动或移动其余元素来为新元素腾出空间,并且如果向量是使用实际大小大于其当前长度的额外可用空间创建的(瞬态向量和conj!,但不适用于持久向量),在第一个空闲位置添加新元素并将其长度增加一个单位很简单。

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

Clojure 中向量和列表上 conj 的行为差异 的相关文章

  • 测试 python 列表的所有元素是否为 False

    如何返回False如果所有元素都在列表中False 给定的列表是 data False False False Using any https docs python org 2 library functions html any gt
  • Clojure 中的宏和函数

    我在这个 Clojure 教程中读到了以下行 http java ociweb com mark clojure article html Macros http java ociweb com mark clojure article h
  • Java 8 Streams - 嵌套映射到列表

    firstlist stream map x gt return secondList stream map y gt return a string collect Collectors toList Output I need Get
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 将用户定义的函数应用于数据框列表

    我有一系列结构与此类似的数据框 df lt data frame x c notes year 1995 2005 y c NA value 11 21 df2 lt data frame x c notes year 1995 2005
  • 列表子类的 Python 类型

    我希望能够定义列表子类的内容必须是什么 该类如下所示 class A list def init self list init self 我想包括打字 这样就会发生以下情况 import typing class A list typing
  • 使用 PHP 创建矢量图形

    我正在尝试用 PHP 创建矢量图形 我试过开罗 但没能让它发挥作用 我知道 imageMagick 具有矢量功能 但 php net 上的文档非常差 有人可以引导我走向正确的方向吗 这个想法是能够将图形保存到 EPS 我还需要能够使用不同的
  • 如何访问数据框中的一行嵌套字典

    我有一个 json 文件 如下所示 file name main question no Q 1 question what is answer user John comment It is defined as value number
  • Leiningen 在哪里安装 clojure 库?

    第一次运行lien 它会安装clojure 但是要安装吗 似乎并不在 图书馆 图书馆 lein clojure jar 和贡献 jar 在 Unix OS X 标题 上是否有固定位置 Leiningen使用maven 或者更准确地说 是实现
  • 列表值意外变化[重复]

    这个问题在这里已经有答案了 为什么是这个列表r即使我只是想更改列表 也会被更改v 即使它们不指向相同的内存位置 r v list r 2 2 1 2 8 3 10 2 1 8 4 2 4 6 4 for c a in enumerate r
  • 在 Python 中合并/添加列表

    我很确定应该有一种更 Pythonic 的方法来做到这一点 但我想不出一种方法 如何将二维列表合并到一维列表中 有点像 zip map 但有两个以上的迭代器 示例 我有以下列表 array 1 2 3 4 5 6 7 8 9 我希望有 re
  • 将 2D 矢量转换为 2D 数组

    自从我上次访问数组以来已经有一段时间了 我最近一直在使用向量 我需要将 2D 向量转换回 2D 数组 因为我正在使用的库接受类型的参数double array该数组的访问器在哪里foo i j 例如 这是我的代码 double setupH
  • 如何获取 std::vector 作为 int 的大小?

    I tried include
  • 查找字典中列表的最大值

    我有一个字典 每个键后面都有一个存储的列表 看起来像这样 dict with values u New York u New York u NY datetime datetime 2014 8 13 0 0 10 u New York u
  • Common Lisp 中的原子和 Clojure 中的原子有什么区别?

    下列page http clojure org atoms讨论原子在 Clojure 中的工作原理 它并没有详细说明 Clojure 和其他 lisp 方言中原子之间的差异 Common Lisp 中的原子和 Clojure 中的原子之间的
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 使用 Beautifulsoup 抓取多个网站

    我想知道为什么列出all links and all titles不想接收列表中的任何记录titles and links 我也尝试过 extend 方法 但没有帮助 import requests from bs4 import Beau
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • 调整向量大小会使迭代器失效吗?

    我发现这个C 代码 vector
  • Emacs htmlize 在批处理模式下?

    我喜欢在 emacs 中使用 htmlize file 将 clojure 源文件转换为 html 我想从 linux 命令行使用它 或者从 clojure 本身以编程方式使用它 I tried emacs eval htmlize fil

随机推荐

  • 如何在CSS中将页脚粘贴到底部? [复制]

    这个问题在这里已经有答案了 我遇到了在浏览器底部定位页脚的经典问题 我尝试过的方法包括http ryanfait com resources footer stick to bottom of page 但没有什么好结果 我的页脚总是出现在
  • HTML中点击后如何保持选择?

    我正在编写一个 WYSIWYG 编辑器 不能使用像 TinyMCE 这样的东西 必须自己编写代码 并且我希望用户能够通过在 HTML 中添加标签来将文本设置为粗体 下划线 链接等 我遇到的问题是 当用户选择可编辑 div 中的文本 然后单击
  • Bash 检查是否存在不存在的文件?

    在 bash 中运行以下命令 stuff rpm ql
  • 使用 Eclipse + ADT 创建 Android 应用程序的“最小”源文件

    我试图使用 Eclipse ADT Android 开发工具包 来了解最小 Android 应用程序的结构 请您告知我需要的最小源文件集是什么 例如 src package MainActivity java res layout acti
  • Visual Studio 中的 Typescript AMD 模块

    我从使用 Visual Studio 2012 Ultimate 的 TypeScript 开始 我已经更改了 MSBuild 包括编译器命令中的 module amd 标记 编译器开始生成AMD模块 我在我的项目中包含了来自 Nuget
  • Python:乘法覆盖

    所以 我有一个自定义类 mul 与整数一起使用的函数 然而 在我的程序 在库中 中 它被以相反的方式调用 即2 x where x是我班的 有什么办法可以让它使用我的 mul 功能为此 只需将以下内容添加到类定义中即可 rmul mul
  • 返回匿名类型的简单方法(使使用 LINQ 的 MVC 成为可能)

    我想在使用 LINQ 特别是 LINQ to entities 的同时实现 MVC 我这样做的方法是让控制器使用 LINQ 生成 或调用生成的东西 结果集 然后将其返回到视图以显示数据 问题是 如果我这样做 return from o in
  • Xkb:如何将键码转换为键符号

    我只是尝试获取 KeyCode 和修饰符掩码 并使用 Xkb 扩展将其转换为 KeySym 我似乎无法弄清楚为什么这不起作用 很明显修饰符不匹配 但我不知道为什么 我什至不知道我是否正确转换了该组 include
  • 如何动态地将输入字段添加到表单中?

    我不是一个网络程序员 但我正在创建一个简单的网络应用程序 它有一个表单 用户可以在其中输入一系列点 x y z 但我不知道用户有多少即将进入 我不想猜测可能的最大值 也许是 100 并在表单上放置 100 个字段 因为它看起来很难看 当用户
  • 替换除字符串开头以外的所有字符(正则表达式)

    我正在尝试删除字符串数字中的所有减号 破折号 除了第一次出现之外 摆弄正则表达式 JavaScript 半小时后 仍然没有结果 有谁知道修复方法吗 Given 123 45 6 预期的 123456 Given 789 1 0 预期的 78
  • 为什么我的 TinyMCE 隐藏文本区域出现问题?

    我有大约7个textarea网页上的所有内容都是使用TinyMCE的富文本编辑器 然而 在页面加载时 只有其中 1 个可见 其余的则隐藏 用户可以单击 显示 链接 该链接将一一显示剩余的文本区域 但是 我有一个奇怪的问题 一切textare
  • 如何将 CSV 文件拆分为多个块并在 Java 代码中并行读取这些块

    我有一个非常大的 CSV 文件 1GB 它有 100 000 行 我需要编写一个 Java 程序来解析 CSV 文件中的每一行 以创建要发送的 HTTP 请求的正文 换句话说 我需要发送 100 000 个 HTTP 请求 这些请求与 CS
  • jQuery .text() 多个元素同一个类

    我试图在页面上的多个 未知数量 元素上使用 text 考虑 ul li class myClass element1 li li class myClass element2 li li class myClass element3 li
  • 旋转图像时如何避免OutOfMemory ex?

    public static boolean rotateBitmapByExifAndSave File targetFile if targetFile null targetFile exists targetFile canRead
  • MASM:从程序集中访问全局 C 变量

    我正在编写一个程序来转换图像并比较 C 语言和汇编语言处理数据的速度 我有3个项目 C语言的主要项目 C 中的 DLL 来转换图像 ASM中的DLL用于转换图像 在C DLL头文件中 我简单地写了 ifdef PROJEKTC EXPORT
  • 计算一列中行之间的Datediff(超过2条记录)

    我有一个表 其中有一列日期 我想找出它们之间的差异 我已经能够在您的网站上找到一个答案 让我了解两个日期之间的差异 但找不到任何可以让我了解每个客户的几条记录之间差异的答案 我的数据如下 Customer Pstng Date Henry
  • 如何限制 Chrome 中的并发(并行)浏览器请求?

    背景 我注意到几乎所有代理提供商都有 最大线程数 允许 根据我的理解 这意味着一次并发 并行浏览器请求的最大数量 由于现代网站可以有许多并行请求 因此如何在 Chrome 中限制并行请求 全局范围内整个浏览器 不仅针对每个主机 服务器 而且
  • C++ 排序跟踪索引[重复]

    这个问题在这里已经有答案了 您是否有一些有效的例程来返回带有数组中排序元素索引的数组 我认为使用 stl 存在一些方便的方法vector 您是否已经在不使用 stl 的情况下实现了高效的算法 或者您是否有伪代码或 C 代码的参考 使用 C
  • 工具栏和选项卡之间有一条线

    如何删除工具栏和tablayout之间的深线 我在google上搜索有人说 向工具栏和tablayout添加一些标高 我做了但它不起作用 从工具栏和tablyout中删除标高后 它也不起作用 请帮帮我 tablayout xml
  • Clojure 中向量和列表上 conj 的行为差异

    我是 clojure 的新手 最初我正在经历Clojure org and 作弊簿 我想知道不同行为的确切原因是什么conj在列表和矢量上 conj 1 2 3 4 1 2 3 4 conj list 3 2 1 4 4 3 2 1 当我将