1

2 つのリストを取り、次のような新しいリストを作成する必要がある関数を作成しています。

(a b) (c d e f) --> ((a b c) (a b d) (a b e) (a b f))

つまり、2 番目のリストの各要素は、2 番目のリストの各要素に対して 1 つずつ、最初のリストに要素として追加されます。

これを行う方法がわかりません。私は次のバリエーションを試しました:

(map list (list1) (list2))

成功しませんでした。

アドバイスをいただければ幸いです。

4

1 に答える 1

2

複数の引数を使用mapすると、リストが並列に反復されますが、これは望ましくありません。

基本的に、最初のリストを 2 番目のリストの各要素の先頭に追加する必要があります。したがって、次のようなものが必要です。

(map (lambda (x) (append list1 (list x))) list2)

リストの末尾への追加はO(n)操作であることに注意してください。そのため、リストの先頭に各項目を追加できるようにアルゴリズムを再構築できる場合は、そのほうがよいでしょう。

于 2011-02-27T02:23:26.693 に答える