Racket 有没有一种方法可以使用索引对列表进行排序?
下面的代码可以按我想要的方式对列表进行排序,但我必须使用列表操作,如Racket 有没有一种方法可以使用索引对列表进行排序?,racket,Racket,下面的代码可以按我想要的方式对列表进行排序,但我必须使用列表操作,如first,second,等等。如果我只有一个整数索引,我将如何使用它进行排序 #lang racket (define lst '(("1" "Z") ("2" "A"))) (sort lst #:key second string<?) #朗球拍 (定义lst’(“1”Z)(“2”A”)) (排序lst#:键入第二个字符串使用列表参考: > (define lst '(1 2 3 4 5)) > (l
first
,second
,等等。如果我只有一个整数索引,我将如何使用它进行排序
#lang racket
(define lst '(("1" "Z") ("2" "A")))
(sort lst #:key second string<?)
#朗球拍
(定义lst’(“1”Z)(“2”A”))
(排序lst#:键入第二个字符串使用列表参考
:
> (define lst '(1 2 3 4 5))
> (list-ref lst 0)
1
> (list-ref lst 4)
5
第一个参数是要引用的列表,第二个参数是索引
函数first
到tenth
实际上只是list ref
的简写,也可以指定比较器:
(define (sorter ll i)
(sort ll
(lambda(a b)
(if (string<? (list-ref a i) (list-ref b i))
#t #f))))
(define lst '(("1" "Z") ("2" "A")))
(sorter lst 0)
(sorter lst 1)
哦,但是我不能使用从列表引用返回的数字。例如,(sort lst#:key 0 string),那么您不能使用(sort lst#:key(lambda(l)(列表引用l 0))string@Majora320您是否应该编辑您的答案以包含该模式?
'(("1" "Z") ("2" "A"))
'(("2" "A") ("1" "Z"))