当我遇到障碍时,我试图在Godel,Escher,Bach这本书中编写出MIU Formal系统。我是计算机科学和python的新手,因此是基础问题。
derivations = [[0,'MI'],[1,'MII','MIU'],[2,'MIUIU','MIIU','MIII']]
我想创建派生子索引的索引,这些索引在每个子索引的开头都有一个树深度编号。将这些子索引与该整数隔离以通过循环运行以下字符串的最佳方法是什么?
提前谢谢答案 0 :(得分:1)
听起来像你想要这样的东西:
depthDict = {x[0]:x[1:] for x in derivations}
其中将列出列表并使用第一个元素作为键构造dict
。这样,您可以通过树深度编号访问字符串列表,如下所示:
print depthDict [1] # prints ['MII', 'MIU']
或
for myString in depthDict[3]:
print myString # prints MII and MIU
答案 1 :(得分: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)
将生成给定字符串的变体。