【发布时间】:2022-09-23 16:40:38
【问题描述】:
在研究来自 - https://composingprograms.com/pages/23-sequences.html#linked-lists 的链表时
empty =\'empty\'
four = [1, [2, [3, [4, \'empty\']]]]
x = [1,2];
def is_link(s):
\"\"\"s is a linked list if it is empty or a (first, rest) pair.\"\"\"
return s == empty or (len(s) == 2 and is_link(s[1]))
print(is_link(four))
print(is_link(x))
该程序将四个识别为链表,但是当我插入 x 时,它返回错误而不是返回 \"False\"。
如果我将 x 的值更改为仅 [1] 或 [1,2,3] 它会按预期返回,但是如果我输入具有 2 个值的普通列表 [1,2] 我会遇到此错误。 。为什么是这样?
-
它适用于
[1]和[1, 2, 3],因为len(s) == 2条件失败并返回False。对于[1, 2]- 长度为2,但最后一个元素是int,它没有len -
如果您在
is_link的开头添加print(s),应该很容易找出问题所在。 -
@Mortz我认为您的回答是正确的逻辑。