球拍:从k元组映射到n元组

问题描述 投票:1回答:4

假设我们得到一个4元组(1,2,3,“cookies”)并喜欢将它映射到一个较小的元组(1,2,3)。如何实现这种映射?是否存在类似于“切片”功能的东西,例如蟒蛇?

在这个上下文中还有另一个问题:如何串起来,例如“1.5”被转换为1.5?有没有'toFloat'功能? - >在这里找到了解决方案。对于stackoverflow研究不足,我深表歉意。 (见:Turn string into number in Racket

谢谢你的任何提示

tuples racket slice
4个回答
2
投票

你总是可以创建自己的函数,一种“my-4-tuple-to-3-tuple”函数,它只是根据旧元素创建一个新的元组。如果你有很多不同的4个元组,这是不好的,因为它不是一个非常通用的解决方案。

例如......如果您将元组表示为列表。

(define (4tuple-to-3tuple 4tuple)
    (list (first 4tuple) (second 4tuple) (third 4tuple))

1
投票

我没有在小数点上实际使用它但你可以使用(字符串 - >数字“1.5”)它应该工作,但是可能有一个数字真实或nunber浮动tho


1
投票

使用droptake

如果您需要从列表末尾删除某些内容,请执行以下操作:

 `(reverse (drop (reverse xs) 5)`

使用rest删除单个元素:

 `(reverse (rest (reverse xs))`

请注意,如果您需要经常操作列表的末尾,则单个链接列表是错误的表示选择。

要将字符串转换为数字,请使用string->number

关于drop的文章:http://docs.racket-lang.org/reference/pairs.html?q=drop

关于string->number的文章:http://docs.racket-lang.org/reference/generic-numbers.html?q=string-%3Enumber


1
投票
  1. 使用矢量而不是郁金香
  2. 使用vector-copy来拼接
  3. 矢量链接:http://docs.racket-lang.org/reference/vectors.html
© www.soinside.com 2019 - 2024. All rights reserved.