python中的LISP缺点


问题内容

cons在Python中是否有等效功能?(任何高于2.5的版本)

如果是这样,它是内置的吗?还是我需要easy_install获取一个模块?


问题答案:

在Python中,使用基于数组的list类比使用Lisp样式的链表更为典型。但是在它们之间进行转换并不难:

def cons(seq):
    result = None
    for item in reversed(seq):
        result = (item, result)
    return result

def iter_cons(seq):
    while seq is not None:
        car, cdr = seq
        yield car
        seq = cdr

>>> cons([1, 2, 3, 4, 5, 6])
(1, (2, (3, (4, (5, (6, None))))))
>>> iter_cons(_)
<generator object uncons at 0x00000000024D7090>
>>> list(_)
[1, 2, 3, 4, 5, 6]