gpt4 book ai didi

在 Lisp 中对字符列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:47 24 4
gpt4 key购买 nike

有没有一种方法可以按字母顺序(从“a”到“z”)对仅由字符组成的列表进行排序,例如:(list c m a y k) => (list a c k m y)?

我没有找到这样的排序,所以我认为这可以解决问题:

cl-prompt> (setq q (mapcar 'string '(c m a y k))) => ("C" "M" "A" "Y" "K")
cl-prompt> (sort q 'string<) => ("A" "C" "K" "M" "Y")

此时我卡住了,因为通过使用字符转换器,输出将不是我想要的列表。示例:

char (string 'a) 0 => #\A

我将得到一个由以下内容组成的列表:(#\A #\C#\K #\M #\Y),这不是我想要的结果。

最佳答案

(c m a y k)的情况下,您有一个符号列表。在(#\A #\C #\K #\M #\Y)的情况下,你有一个字符列表。

如果你想根据符号名称对符号列表进行排序,你可以这样做(我假设列表绑定(bind)到下面的变量 foo):

(setq foo (sort foo #'string< :key #'symbol-name))

请注意 :key #'symbol-name可以说是多余的,因为string<实际上对“字符串指示符”进行操作,但对于人类读者来说更清楚的是,如果您明确表示,您确实打算根据符号名称对列表进行排序。

关于在 Lisp 中对字符列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41383951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com