首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用clojure,有没有更好的方法从序列中删除项,这是映射中的值?

在Clojure中,我们可以使用remove函数从序列中删除满足某个条件的项。这个函数接受一个谓词函数作为参数,对序列的每个元素进行求值,返回一个新的序列,其中不满足条件的项被保留。

例如,假设我们有一个序列(1 2 3 4 5),我们想要删除所有偶数。我们可以使用以下代码:

代码语言:txt
复制
(def seq1 '(1 2 3 4 5))
(def seq2 (remove even? seq1))

在上述代码中,even?是一个Clojure内置的谓词函数,它判断一个数是否为偶数。remove函数会对seq1中的每个元素应用even?函数,并返回一个新的序列seq2,其中仅包含不满足条件的项:(1 3 5)

对于映射中的值,我们可以使用dissoc函数来删除指定的键值对。dissoc函数接受一个映射和一个或多个键作为参数,在返回的新映射中删除指定的键值对。

例如,假设我们有一个映射{:a 1 :b 2 :c 3},我们想要删除键为:b的键值对。我们可以使用以下代码:

代码语言:txt
复制
(def map1 {:a 1 :b 2 :c 3})
(def map2 (dissoc map1 :b))

在上述代码中,dissoc函数会返回一个新的映射map2,其中键为:b的键值对被删除:{:a 1 :c 3}

总结起来,在Clojure中从序列中删除项可以使用remove函数,而在映射中删除值可以使用dissoc函数。

相关链接:

相关搜索:React -使用项的名称/值从数组中删除项通过比较特定值从多维数组中删除重复项的方法有没有更好的方法来使用selenium从HTML表格中获取文本?一种从Clojure中的java.io.File.listFiles中删除返回值的方法有没有更好的方法来使用system.text.json从JSON对象中获取特定值?有没有一种方法可以从最终工件中删除任何未使用的依赖项?使用jq根据输入中其他位置的值从数组中删除项有没有一种更好的方法来使用反射从循环内的propertyName获取类的属性的值?有没有一种比使用.drop()更好的方法通过从DataFrame中删除几列来保留几列?自动递增要分配的值作为输入,然后使用值从数据库中删除项;有没有办法使用C# SDK从Microsoft Graph API中获取已删除的目录项?从数组中删除非唯一值,保持顺序,不使用向量的最好方法?有没有更好的方法将类项目添加到Xamarin中的条目单元格中,并在空值时使用占位符?有没有更好的方法为tibble中的每个键(sym)添加一个新的值/字段,而不是使用mutate然后使用pivot_longer?我想使用splice方法从对象数组中删除动态追加的卡片,但循环迭代得到的值是错误的有没有一种方法可以使用OpenXml从列中获取最后填充的行单元格值有没有一种方法可以访问top数组中的值,同时使用jmespath从嵌套数组中获取信息?有没有一种方法可以在不使用另一个for循环的情况下将相同值的多个项附加到字典中的列表中?有没有一种方法可以使用Flask (jinja2)从带有用户输入的HTML表中删除一行?在Excel中,有没有一种方法可以使用“索引匹配”在多个工作表上找到一个值,然后将该值从所需的工作表中粘贴出来?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • SWIG 官方文档第三部分 - 机翻中文人肉修正

    很有可能,您正在阅读本章是出于以下两个原因之一;您要么想自定义 SWIG 的行为,要么无意中听到有人嘟囔着一些关于“typemaps”的难以理解的胡言乱语,然后问自己“typemaps,那些是什么?” 也就是说,让我们先做一个简短的免责声明,即“Typemaps”是一种高级自定义功能,可以直接访问 SWIG 的低级代码生成器。不仅如此,它们还是 SWIG C++ 类型系统(它自己的一个重要主题)的组成部分。typemaps 通常不是使用 SWIG 的必需部分。因此,如果您已经找到了进入本章的方法,并且对 SWIG 默认情况下已经做了什么只有一个模糊的概念,那么您可能需要重新阅读前面的章节。

    03

    Kotlin入门(16)容器的遍历方式

    Kotlin号称全面兼容Java,于是乎Java的容器类仍可在Kotlin中正常使用,包括大家熟悉的队列ArrayList、映射HashMap等等。不过Kotlin作为一门全新的语言,肯定还是要有自己的容器类,不然哪天Java跟Kotlin划清界限,那麻烦就大了。与Java类似,Kotlin也拥有三类基本的容器,分别是集合Set、队列List、映射Map,然后每类容器又分作只读与可变两种类型,这是为了判断该容器能否进行增删改等变更操作。Kotlin对修改操作很慎重,比如变量用val前缀表示不可修改,用var前缀表示允许修改;类默认是不允许继承的,只有添加open前缀才允许该类被继承;至于容器默认为只读容器,如果需要进行修改则需加上Mutable形成新的容器,比如MutableSet表示可变集合,MutableList表示可变队列,MutableMap表示可变映射。 既然Set/List/Map都属于容器,那么必定拥有相同的基本容器方法,具体说明如下: isEmpty : 判断该容器是否为空。 isNotEmpty : 判断该容器是否非空。 clear : 清空该容器。 contains : 判断该容器是否包含指定元素。 iterator : 获取该容器的迭代器。 count : 获取该容器包含的元素个数,也可通过size属性获得元素数量。 初始化赋值 : Kotlin允许在声明容器变量之时进行初始赋值,这点很方便比Java先进,当然不同容器的初始化方法有所区别,具体的对应关系见下表: 只读集合Set    setOf 可变集合    mutableSetOf 只读队列List    listOf 可变队列MutableList    mutableListOf 只读映射Map    mapOf 可变映射MutableMap    mutableMapOf 以上是Kotlin容器的基本方法,更具体的增删改查等用法则有所不同,下面分别介绍这三类六种容器的详细用法。

    02
    领券