list - 如何找到多级列表的长度?

标签 list lisp common-lisp

( setq list1 '( a ( b ( c d ) e ) f ( g h ) i ) )
( print ( length ( list1 ) ) )

这里的输出是5,但我希望输出是9。如何分解列表并找到整个长度?

最佳答案

您似乎不想计算长度,而是计算给定列表的原子数(树中的叶子)。 为此,您需要定义一个函数来检查参数是原子还是列表。在第一种情况下,它将返回 1(一个原子中的原子数)。在第二种情况下,它将返回列表中每个单独分支的原子总和,使用相同的函数计算。 这应该足以让您入门。

关于list - 如何找到多级列表的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40915190/

相关文章:

common-lisp - 具有 SBCL 外部接口(interface)的 Win32 MessageBox

common-lisp - 普通 lisp 中的嵌套 mapcar

Java排序循环不工作

java - 在 Java 中显示列表

c# - 如何在字符串列表中添加额外的字符?

Scheme 中的范围 (Lisp)

python - python 中如何找到字典中哪些列表值包含最多元素?

lisp - 使用lisp添加两个列表

postgresql - 使用 Lisp/Postmodern/PostgreSQL 变量作为表名

lisp - Common Lisp 中的 LET 与 LET*