gpt4 book ai didi

list - 从两个不同大小的列表创建对列表

转载 作者:行者123 更新时间:2023-12-04 15:16:37 25 4
gpt4 key购买 nike

对于 Scheme 还是个新手,我目前在创建由两个不同长度的单独列表构成的对列表时遇到了问题。

这是我当前的代码:

#lang racket

(define letters '(a b c))

(define (create-lst-letters lst)
(map (lambda (x y) (list x y)) letters lst))

控制台输入:

(create-lst-letters '(1 2 3 4 5 6 7 8))

当前输出:

map: all lists must have same size
first list length: 8
other list length: 3

想要的输出:

'((a . 1) (b . 2) (c . 3) (a . 4) (b . 5) (c . 6) (a . 7) (b . 8))

另一种直觉是得到输入列表长度除以“字母”的商和余数。通过附加“字母”商次来创建一个新列表,然后连接“字母”元素的第一个余数。使用该新列表执行上面的 map 。我觉得这不是好的做法,也不是优雅的解决方案,但我没有其他想法。

最佳答案

您可以使用 in-cyclefor/list以简洁地生成您想要的输出。

#lang racket

(define letters '(a b c))

(define (create-lst-letters lst)
(for/list ([x (in-cycle letters)] [y lst])
(cons x y)))

(create-lst-letters '(1 2 3 4 5 6 7 8))
; '((a . 1) (b . 2) (c . 3) (a . 4) (b . 5) (c . 6) (a . 7) (b . 8))

关于list - 从两个不同大小的列表创建对列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64214191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com