我为我生成的 Python 提供了以下工作代码。这是一个基于 Lindenmayer 的重写系统。输出 C 是:+-LF+RFR+FL-F-+RF-LFL-FR+F+RF-LFL-FR+-F-LF+RFR+FL-+
我可以将其解释为绘制空间填充曲线。C 是起始字母,该过程执行 n 次。
C = 'L'
n = 2
Code = {ord('L'):'+RF-LFL-FR+',
ord('R'):'-LF+RFR+FL-'}
while n:
C = C.translate(Code)
n -=1
print C
现在我想要,代码是从列表中自动编写的。例如,我有R=[['L', '+RF-LFL-FR+'], ['R', '-LF+RFR+FL-']]
应该自动插入代码中的列表,所以我可以进一步使用它。每个子列表的第一个元素应插入ord()
方法中,第二个元素应插入冒号之后。有什么建议么?
我通过列表理解找到了一种方法。列表 R 是L=+RF-LFL-FR+, R=-LF+RFR+FL-
。现在我问是否有更有效的方法来获取代码?
R = ['L=+RF-LFL-FR+','R=-LF+RFR+FL-']
A = 'L'
for i in range(0,len(R)):
R[i]=R[i].split('=')
print R
Start = []
Rule = []
for i in range(0,len(R)):
Start.append(R[i][0])
Rule.append(R[i][1])
#mapping via list comprehension
while n:
A=''.join([Rule[Start.index(i)] if i in Start else i for i in A])
n -=1
print A