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"))