是否有Python的[n:m]列表片断的简洁emacs lisp等价物?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (71)

令人惊讶的是,我发现自己在emacs lisp中缺少的一件事是,列表操作的一个特殊部分。我想念Python的简洁列表切片。

>>> mylist = ["foo", "bar", "baz", "qux", "frobnitz"]
>>> mylist[1:4]
['bar', 'baz', 'qux']

我看到了这些函数,butlastnthcdr在emacs文档中提供了如下代码的相同结果:

(setq mylist '("foo" "bar" "baz" "qux" "frobnitz"))
(butlast (nthcdr 1 mylist) 1)
;; ("bar" "baz" "qux")

有没有得到一个列表的片段比合并更简洁的方式butlastnthcdr

提问于
用户回答回答于

当然有:

(require 'cl)
(setq mylist '("foo" "bar" "baz" "qux" "frobnitz"))
(subseq mylist 1 4)
;; ("bar" "baz" "qux")
用户回答回答于

Common Lisp库很不错,但是如果你的代码库变得很大,并且你想用功能风格编写简洁的代码,我会支持dash.el库,它为列表和树的操作提供了大量的函数。有一个函数的-slice行为就像Python的切片一样:

(-slice (number-sequence 1 10) 1 7 2) ; (2 4 6)

参数按顺序排列:列表,开始,(可选)停止,(可选)步骤。

所属标签

可能回答问题的人

  • Richel

    5 粉丝0 提问6 回答
  • 人生的旅途

    10 粉丝484 提问5 回答
  • 嗨喽你好

    7 粉丝480 提问4 回答
  • 不吃貓的鱼oo

    4 粉丝466 提问4 回答

扫码关注云+社区

领取腾讯云代金券