克利福德图书馆:Blade 索引导致键错误

Clifford library: Blade indexing causing key error

我是 Python 的新手,我正在尝试将我在网上找到的一些代码用于本科物理项目。此代码包含导致我出现问题的 clifford 库。鉴于代码的语法以及我使用 pip3 安装它的事实,它应该是 Python 3.

在 运行 这个代码之后:

from __future__ import division
import numpy
from clifford import *
layout, blades = Cl(3,0)
e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
I = (e0^e1^e2)

我得到以下回溯:

Traceback (most recent call last):
  File "/Users/melissa/Documents/Fodje.py", line 5, in <module>
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
  File "/Users/melissa/Documents/Fodje.py", line 5, in <listcomp>
    e0, e1, e2 = [blades['e%i'%k] for k in range(3)]
KeyError: 'e0'

我问过我的 CS 教授,他说 blades 中的索引可能有问题。

谁能帮我解决这个问题?谢谢!

完整代码为here Clifford 文档是 here.

这里的问题是字典 object blades 包含键 e1、e2、e3 等等。 range() 函数从 0 开始,所以 range(3) 本质上 returns 列表 [0,1,2] -(它实际上是一个 ittarator 而不是列表,但你不必担心).

您收到密钥错误的原因是,python 正在刀片中查找密钥 e0,但它不存在。将 k 替换为 k+1,它应该可以工作。

e.g.e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)]

一般来说,如果您尝试自行解决问题,关键错误意味着您试图查找不存在的内容。所以一个好主意可能是打印 object。所以为了诊断这里出了什么问题,我只是做了 print(blades) 并且它变得很清楚了。希望对您有所帮助。

完整代码为:

from __future__ import division
import numpy
from clifford import *
layout, blades = Cl(3,0)
e1, e2, e3 = [blades['e%i'%(k+1)] for k in range(3)]
I = (e1^e2^e3)