0

ゴーデル、エッシャー、バッハという本で MIU Formal システムをコード化しようとしていたとき、障害に遭遇しました。私はコンピューターサイエンスとPythonにかなり慣れていないため、基本的な質問です。

derivations = [[0,'MI'],[1,'MII','MIU'],[2,'MIUIU','MIIU','MIII']]

各サブインデックスの先頭にツリー深度番号を持つサブインデックスのインデックスの派生を作成したかったのです。これらのサブインデックスをその整数で分離して、次の文字列をループで実行する最良の方法は何ですか?

前もって感謝します

4

2 に答える 2

1

あなたはこのようなものが欲しいように私には思えます:

depthDict = {x[0]:x[1:] for x in derivations}

リストのリストを取得dictし、最初の要素をキーとして a を構築します。このようにして、次のようにツリーの深さの番号で文字列リストにアクセスできます。

print depthDict [1] # prints ['MII', 'MIU']

また

for myString in depthDict[3]:
  print myString # prints MII and MIU
于 2012-07-23T04:12:40.843 に答える
0

特定のサブインデックスを検索している場合は、次の方法で検索できます。

>>> sub_indexes = [index for index where index[0] == 1]
>>> sub_indexes
[[1,'MII','MIU']]

これにより、深さが1のすべてのサブインデックスが返されます。結果は検索条件に一致するすべてのインデックスのリストになるため、インデックスを取得するには、次の手順を実行する必要があります。

>>> sub_index = sub_indexes[0]
>>> sub_index
[1, 'MII', 'MIU']]

この後、次の方法で文字列を処理できます。

depth = sub_index[0]
for mu_string in [item for item in sub_index if hasattr(item, 'count')]:
    new_strings = generate_more_strings(mu_string, depth)

ここgenerate_more_strings(my_string)で、指定された文字列のバリエーションが生成されます。

于 2012-07-23T03:41:42.267 に答える