みましょう、私は次のリストを持っていると言う:つのリストのうちの2つのリストを取得します
(list '("a" 2) '("b" 1) '("c" 'end))
私は最初のリストのうちの二つのリストを取得したい、出力:
(list "a" "b" "c") and (list 2 1 'end)
どのように私はラケットでこれを行うだろうか?
私はこのような何かを思い付いた:マニュアルループ機能については
みましょう、私は次のリストを持っていると言う:つのリストのうちの2つのリストを取得します
(list '("a" 2) '("b" 1) '("c" 'end))
私は最初のリストのうちの二つのリストを取得したい、出力:
(list "a" "b" "c") and (list 2 1 'end)
どのように私はラケットでこれを行うだろうか?
私はこのような何かを思い付いた:マニュアルループ機能については
#lang racket
(define l (list '("a" 2) '("b" 1) '("c" 'end)))
(values (map first l)
(map second l))
...出力は私の空のリストを与える
(define first (mlist))
(define second (mlist))
(define (get-two-lists l)
(for ([i t])
(mappend! first (list-ref i 0))
(mappend! second (list-ref i 1))))
:
(define (f l)
(let loop ((l l)
(l1 '())
(l2 '()))
(if (empty? l)
(values (reverse l1)
(reverse l2))
(loop (rest l)
(cons (first (first l)) l1)
(cons (second (first l)) l2)))))
テスト:
(f (list '("a" 2) '("b" 1) '("c" 'end)))
出力:
'("a" "b" "c")
'(2 1 'end)
きれいです!ありがとう – Bun