リストを別のリストに挿入する方法に任意の数のリストから値のすべての組み合わせを反復処理しますリストを別のリストリストに挿入する必要があるという回答を投稿しました。 InsertInto関数は、挿入されたリストを要素に解凍しますが、これは私が望んでいることではありません。 リストの終わりを超えた要素に代入ステートメントを使用しました。これにより、リストが要素として挿入されます。 別の選択肢は、リストを挿入する前に別のリストでラップすることです(つまり、ラップされたリストを解凍し、元のリストを挿入します)。
リストをリストに挿入するためのより良い方法はありますか? resultとpは両方ともリストです。
結果[ Nアイテム((結果)。 + 1 ] = p少し言葉遣いですが、機能し、pがリストの最後の要素の直後に格納されていることはかなり明らかです。 拡張には適していますが、他の場所には挿入できません。
結果= {"a"};
p = {"b"、 "c"};
result [N Items(result)+ 1] = p; //言葉は多いが、意図は明確
show(result);
/ *:
結果= {"a"、{"b"、 "c"}}; // 良い
Insertinto(結果、p) pではなくpの要素を挿入するため、機能しません。
結果= {"a"};
p = {"b"、 "c"};
insertinto(result、p); //正しく見えますが、...
show(result);
/ *:
結果= {"a"、 "b"、 "c"}; //私が欲しいものではない
insertinto(result、evallist({p}))動作しますが、割り当てよりも読みにくいようです。 どこにでも挿入できますが、余分なコピーを作成します。
結果= {"a"};
p = {"b"、 "c"};
insertinto(result、evallist({p})); //リストの余分なコピーを作成し、読みにくくします
show(result);
/ *:
結果= {"a"、{"b"、 "c"}}; //良い:欲しいもの
スクリプティングRe:リストを別のリストに挿入する方法FWIW 2番目の例では、常にEvalList()の方法で実行します。 私はあなたがそれをこのように行うことができ、あなたが望む/必要になるまで評価しないと思います...これがあなたをたくさん買っているかどうかわからない(?)
result = {"a"};
p = {"b", "c"};
Insert Into( result, {p} ); //don't evaluate p here... but of course p is non-static
show(result[2][1]); //can still access elements of p if desired
Show( Eval List( result ) ); //or can eval to see the whole thing

Re:リストを別のリストに挿入する方法直接的な解決策ではありませんが、回避策として、私は連想配列を使用する傾向があります。 @pmrozあなたのリンクで提案されました。
Re:リストを別のリストに挿入する方法次回はそれを使うかもしれません。 より複雑な(内部の)データ構造を使用している場合でも、より単純に見えます。すでにnitems(...)+ 1 ...でインデックスを生成しているので、より良い選択かもしれません。
Re:リストを別のリストに挿入する方法はい。 私はevallist()アプローチを使用しましたが、説明するためにコメントが必要だと常に感じています。 私の元のコード(上部のリンク)では、挿入の間にpを変更し続けているため、pへの参照を挿入するだけでは不十分です。