程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了遍历 Racket 中的结构列表列表?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决遍历 Racket 中的结构列表列表??

开发过程中遇到遍历 Racket 中的结构列表列表?的问题如何解决?下面主要结合日常开发的经验,给出你关于遍历 Racket 中的结构列表列表?的解决方法建议,希望对你解决遍历 Racket 中的结构列表列表?有所启发或帮助;

给出以下形式的列表:

(define lst (List
    (List
    (make-route-section 32 'ordinary-road 23 0.45)
    (make-route-section 54 'ordinary-road 92 0.83)
    (make-route-section 14 'street 8 0.82)
    (make-route-section 44 'ferry 34 0.64)
    (make-route-section 96 'ferry 249 0.41)
    )(
    List
    (make-route-section 92 'ordinary-road 12 0.44)
    (make-route-section 98 'highway 45.243 0.3)
    (make-route-section 44 'ordinary-road 34.4 0.64)
    (make-route-section 39 'street 6 0.8)
    )(
    List
    (make-route-section 62 'highway 82 0.35)
    (make-route-section 58 'street 4 0.46)
    (make-route-section 50 'highway 81 0.24)
    (make-route-section 75 'highway 67.3 0.39)
    )
    )

路线部分如下:

    (define-struct route-section (ID kind length eco-indeX))
    (define-struct traffic-jam (section-ID delay))

例如,我将如何使用 (List 32 62) 之类的列表过滤掉具有给定 ID(结构的第一个字段)的某些结构,并返回外部列表的第二个元素。特别让我困惑的是,当我输入 (second lst) 时,它返回了整个列表的第一个列表的第二个元素。

如何将路线段的长度相加?感觉好蠢,即使使用高阶函数也无法遍历嵌套列表。

解决方法

这是求总路线长度的方法。

路由是一个段的列表,每个段是一个段的列表,段是结构。

总结一个数字列表的好方法是(foldl + 0 <list>)。但是我们没有数字列表,我们有一个段列表。所以我们想从每个段中得到一个数字。我们可以再次使用 foldl。但是段的每个元素都不是数字:它是一个部分。因此,获取事物列表并获取其他事物列表的一个好方法是使用 (map <function-to-turn-something-into-something-else> <list-of-somethings>)

route-section-length 将接受一个 section 对象并返回它的长度,这就是我们想要映射的函数。所以我们可以开始,在一个段上,把它变成一个段的长度列表:

(map route-section-length <segment>)

现在我们有了每个段的数字列表,我们可以使用 foldl:

(foldl + 0 (map route-section-length <segment>))

这会将一个段变成一个数字。好吧,我们有一个段列表,所以我们想把它们转换成一个数字列表,我们可以通过映射一个函数体来完成,该函数的主体是上面的表达式:

(map (λ (segment)
         (foldl + 0 (map route-section-length segment)))
       routE)

好的,这给了我们一个数字列表,我们现在需要将它们相加,再次使用 foldl

(foldl + 0
         (map (λ (segment)
                (foldl + 0 (map route-section-lenght segment)))
              routE))

这就是我们想要的,包含在定义中。


另外:正确缩进代码

大佬总结

以上是大佬教程为你收集整理的遍历 Racket 中的结构列表列表?全部内容,希望文章能够帮你解决遍历 Racket 中的结构列表列表?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:遍历