Recursion 列表参考:列表球拍EOPL的索引太大

Recursion 列表参考:列表球拍EOPL的索引太大,recursion,scheme,racket,Recursion,Scheme,Racket,我在使用list-ref时遇到问题 是否有一种方法可以使用list ref获得未知列表的大小 (... (if (number? (deref(+ array-ref index))) (array-len array-ref (+ index 1)) 0) ) #|(定义(德里夫参考) (列表参考商店参考)) |#如果您想要列表的大小,请使用length,而不是list ref。例如,在这样的列表中: (define lst '(1 2 3 4 5)) …有效索引

我在使用list-ref时遇到问题

是否有一种方法可以使用list ref获得未知列表的大小

 (... (if (number? (deref(+ array-ref index)))
          (array-len array-ref (+ index 1))
  0) )
#|(定义(德里夫参考) (列表参考商店参考)) |#

如果您想要列表的大小,请使用
length
,而不是
list ref
。例如,在这样的列表中:

(define lst '(1 2 3 4 5))
…有效索引将介于
0
和列表的
length
减1之间:

(list-ref lst 0)
=> 1

(list-ref lst (- (length lst) 1))
=> 5
然而:在Scheme中,编写依赖于列表中元素的索引的代码是不常见的,这是您在类似C语言中使用数组来考虑解决方案的方式,但是Scheme列表是不同的,通常您使用递归遍历列表-忘记索引吧

如果您想要列表的大小,请使用
length
,而不是
list ref
。例如,在这样的列表中:

(define lst '(1 2 3 4 5))
…有效索引将介于
0
和列表的
length
减1之间:

(list-ref lst 0)
=> 1

(list-ref lst (- (length lst) 1))
=> 5
然而:在Scheme中,编写依赖于列表中元素的索引的代码是不常见的,这是您在类似C语言中使用数组来考虑解决方案的方式,但是Scheme列表是不同的,通常您使用递归遍历列表-忘记索引吧

如果您想要列表的大小,请使用
length
,而不是
list ref
。例如,在这样的列表中:

(define lst '(1 2 3 4 5))
…有效索引将介于
0
和列表的
length
减1之间:

(list-ref lst 0)
=> 1

(list-ref lst (- (length lst) 1))
=> 5
然而:在Scheme中,编写依赖于列表中元素的索引的代码是不常见的,这是您在类似C语言中使用数组来考虑解决方案的方式,但是Scheme列表是不同的,通常您使用递归遍历列表-忘记索引吧

如果您想要列表的大小,请使用
length
,而不是
list ref
。例如,在这样的列表中:

(define lst '(1 2 3 4 5))
…有效索引将介于
0
和列表的
length
减1之间:

(list-ref lst 0)
=> 1

(list-ref lst (- (length lst) 1))
=> 5

然而:在Scheme中,编写依赖于列表中元素的索引的代码是不常见的,这是您在类似C语言中使用数组来考虑解决方案的方式,但是Scheme列表是不同的,通常您使用递归遍历列表-忘记索引吧

如果我理解正确,该列表是一个列表列表,例如:

(define lst '((a b c)
              (1 "hi")
              ((lambda(x)(+ 5 x)) 42 'a (14 7 12))
              ("hello" " world")))
获取元素大小的一种快速而肮脏的方法是

 (define third-of-a-size (third (map length lst)))

如果我理解正确,该列表是一个列表列表,例如:

(define lst '((a b c)
              (1 "hi")
              ((lambda(x)(+ 5 x)) 42 'a (14 7 12))
              ("hello" " world")))
获取元素大小的一种快速而肮脏的方法是

 (define third-of-a-size (third (map length lst)))

如果我理解正确,该列表是一个列表列表,例如:

(define lst '((a b c)
              (1 "hi")
              ((lambda(x)(+ 5 x)) 42 'a (14 7 12))
              ("hello" " world")))
获取元素大小的一种快速而肮脏的方法是

 (define third-of-a-size (third (map length lst)))

如果我理解正确,该列表是一个列表列表,例如:

(define lst '((a b c)
              (1 "hi")
              ((lambda(x)(+ 5 x)) 42 'a (14 7 12))
              ("hello" " world")))
获取元素大小的一种快速而肮脏的方法是

 (define third-of-a-size (third (map length lst)))

这一切的背景是什么,为什么不使用长度?如果不把列表讲到底,就无法得到列表的长度,因为列表被定义为空列表或cdr为列表的任何对。前面没有什么可以说明名单有多长。如果你需要一个类似的列表,考虑实现一个手指列表。这应该是一个被称为商店的列表,它有一些索引和对每个表示数组的索引的引用。这是一张名单?向量列表?某个给定向量或列表的索引列表,或混合匹配?在电脑里到底应该是什么样子?@user2227735这个问题还不清楚。您应该编辑它并添加一个实际的示例,带有示例输入和预期输出这一切的上下文是什么,为什么不使用长度?如果不把列表讲到底,就无法得到列表的长度,因为列表被定义为空列表或cdr为列表的任何对。前面没有什么可以说明名单有多长。如果你需要一个类似的列表,考虑实现一个手指列表。这应该是一个被称为商店的列表,它有一些索引和对每个表示数组的索引的引用。这是一张名单?向量列表?某个给定向量或列表的索引列表,或混合匹配?在电脑里到底应该是什么样子?@user2227735这个问题还不清楚。您应该编辑它并添加一个实际的示例,带有示例输入和预期输出这一切的上下文是什么,为什么不使用长度?如果不把列表讲到底,就无法得到列表的长度,因为列表被定义为空列表或cdr为列表的任何对。前面没有什么可以说明名单有多长。如果你需要一个类似的列表,考虑实现一个手指列表。这应该是一个被称为商店的列表,它有一些索引和对每个表示数组的索引的引用。这是一张名单?向量列表?某个给定向量或列表的索引列表,或混合匹配?在电脑里到底应该是什么样子?@user2227735这个问题还不清楚。您应该编辑它并添加一个实际的示例,带有示例输入和预期输出这一切的上下文是什么,为什么不使用长度?如果不把列表讲到底,就无法得到列表的长度,因为列表被定义为空列表或cdr为列表的任何对。前面没有什么可以说明名单有多长。如果你需要一个类似的列表,考虑实现一个手指列表。这应该是一个被称为商店的列表,它有一些索引和对每个表示数组的索引的引用。这是一张名单?向量列表?某个给定向量或列表的索引列表,或混合匹配?在电脑里到底应该是什么样子?@user2227735这个问题还不清楚。您应该编辑它并添加一个实际的e