我试过在 python 中做一个类似 switch 的语句,而不是有很多 if 语句。
代码如下所示:
def findStuff(cds):
L=[]
c=0
for i in range(0, len(cds), 3):
a=differencesTo(cds[i:i+3])
result = {
a[2][0]==1: c=i+1,
a[2][1]==1: c=i+2,
a[2][2]==1: c=i+3,
a[1]==1: L.append((cds[i:i+3], a[0], c))
}
return L
我的问题是,这不起作用。 (适用于 if 语句,但我认为这会更漂亮)。
我在 Python 中找到了一些开关示例,它们遵循这种结构。谁能帮我?
原文由 X-Pender 发布,翻译遵循 CC BY-SA 4.0 许可协议
(a) 我看不出 if…elif…else 有什么问题
(b) 我认为 python 没有 switch 语句的原因与 Smalltalk 没有的原因相同:它几乎是完全多余的,并且在您想要打开类型的情况下,您可以向类中添加适当的方法;同样,打开值应该在很大程度上是多余的。
注意: 我在评论中获悉,无论 Guido 一开始不创建开关的原因是什么,添加它的 PEP 都被拒绝了,因为对添加此类声明的支持极其有限。请参阅:http: //www.python.org/dev/peps/pep-3103/
© 如果您确实需要切换行为,请使用哈希表(
dict
)来存储可调用对象。结构是: