Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 旋转列表列表_List_Racket - Fatal编程技术网

List 旋转列表列表

List 旋转列表列表,list,racket,List,Racket,我想获取任意列表并“旋转”它。也就是说,对于大小为3x3的列表列表: #lang racket (require rackunit) (define (rotate-lol lol) (append (list (map first lol)) (list (map second lol)) (list (map third lol)))) (check-equal? (rotate-lol (list (list 'a 'b 'c)

我想获取任意列表并“旋转”它。也就是说,对于大小为3x3的列表列表:

#lang racket
(require rackunit)

(define (rotate-lol lol)
  (append (list (map first lol)) (list (map second lol)) (list (map third lol))))

(check-equal? (rotate-lol (list (list 'a 'b 'c)
                                (list 'd 'e 'f)
                                (list 'g 'h 'i)))
          (list (list 'a 'd 'g)
                (list 'b 'e 'h)
                (list 'c 'f 'i)))
我想
列表参考
将取代
第一个
/
第二个
/
第三个
,但我不太清楚最简洁的方法


我知道必须有一个优雅的方式来做到这一点。在过去,我对这个问题做了一些不雅观的解决方案,这些解决方案更针对特定领域,但我想解决一般情况,将其保存在个人库中,然后解决这个问题。有什么建议或解决方案吗?

它非常像
zip
,您不必这样做,因为它已经在:

(需要srfi/1)
(zip)(abc)(def)(ghi);((a d g)(b e h)(c f i))
现在,要将所有参数作为您使用的应用列表,请执行以下操作:

(应用zip'((a b c)(d e f)(g h I)))
; ==> ((a d g)(b e h)(c f i))
为了完整起见。以下是如何定义
zip

(定义(zip.lsts)
(应用地图列表(LST))

它非常像
zip
,您不必制作它,因为它已经在:

(需要srfi/1)
(zip)(abc)(def)(ghi);((a d g)(b e h)(c f i))
现在,要将所有参数作为您使用的应用列表,请执行以下操作:

(应用zip'((a b c)(d e f)(g h I)))
; ==> ((a d g)(b e h)(c f i))
为了完整起见。以下是如何定义
zip

(定义(zip.lsts)
(应用地图列表(LST))

真有趣。我在另一个环境中实现了zip,并用它解决了一个非常类似的问题。由于某种原因,
apply
总是避开我的思维过程。。。非常感谢。真有趣。我在另一个环境中实现了zip,并用它解决了一个非常类似的问题。由于某种原因,
apply
总是避开我的思维过程。。。非常感谢。这通常称为矩阵转置。例如,瞧。@JoshuaTaylor我知道有更好的方式来表达它。这就是为什么我在引号中加上“旋转”。这通常被称为矩阵转置。例如,瞧。@JoshuaTaylor我知道有更好的方式来表达它。这就是为什么我在引号中加上“旋转”。