获取列表列表的第二个元素作为列表列表

时间:2018-11-29 11:18:19

标签: racket

我正在学习球拍,我想获得列表列表的第二个列表,而不是列表列表的列表。

我有以下列表列表:

(define list-of-list '(((a b c) (d e f)) ((1 2 3) (4 5 6))))

如果我这样做:

(car list-of-list)

我得到:

> '((a b c) (d e f))

但是,如果我这样做:

(cdr list-of-list)

我得到:

> '(((1 2 3) (4 5 6)))

我也尝试过:

(list-tail list-of-list 1)

但是我得到列表列表的列表:

>'(((1 2 3) (4 5 6)))

获得我想要的东西的唯一方法是做

(cadr list-of-list)
> '((1 2 3) (4 5 6))

我认为这是Racket正确的工作方式,但是,因为我正在学习:

是否有更好的(或函数式编程风格)方法?

2 个答案:

答案 0 :(得分:1)

这是正确的方法,但这更易于阅读:

(second list-of-list)
=> '((1 2 3) (4 5 6))

如果您想知道,还有thirdfourth,依此类推,直到tenth。全部放在docs中。

答案 1 :(得分:0)

我可以推荐“小策划者”(有趣,简短,发人深省)还是“如何设计程序”(HtDP.org上的网络免费提供,详细又详尽,类似于教科书)?两者均由专家精心撰写。实际上,两本书的作者列表中都有一位专家。