私は少し邪魔になるデータ変換があります。私はClojureで自分自身を表現することができず、私が流暢である私のPythonさえ、まだかなり重いと感じています。ClojureでこのPythonを表現するための機能的/慣用的な方法
私のようなデータ構造を必要とする:
[[1, 2, 3, 5, 6]
[1, 2, 4, 5, 6]]
各サブコレクションは、これまでに蓄積された項目に新しいコレクションを作成します。このような構造を生成する
[1, 2, [3, 4], 5, 6]
。私はただ一つのレベルのネスティングしか期待していない。
私のpythonの試みは、次のようになります。
def foo(path, acc_list=[[]]):
for val in path:
if not isinstance(val, list):
for acc in acc_list:
acc.append(val)
else:
for subval in val:
new = acc_list[0][:]
new.append(subval)
acc_list.append(new)
del acc_list[0]
return acc_list
foo([1, 2, [3, 4], 5, 6])
# => [[1, 2, 3, 5, 6], [1, 2, 4, 5, 6]]
私はClojureのソリューションは、(もっと重要なのは)その解決につながった思考こととなるか知りたいのです。
更新
int型の順序が明らかに保存されなければならないが、ちょうど例えば、彼らは、必ずしも命じたキーワードや文字列すぎない可能性があります。
入れ子にすると、
[1 [2 [3 [4 5] 6] 7] 8]
のようにはなりませんが、それ以上は[1 [2 3] 4 [5] 6 [7 8 9]]
のように浅くなります。
なぜ結果に2つのリストが含まれていますか? – ssm