是否有写作的一个更Python的方式:被测试Python的成语对于这种结构
if value <= 10:
print 1
elif value <= 13:
print 2
elif value <= 15:
print 3
elif value <= 24:
print 4
值没有落入任何图案。
是否有写作的一个更Python的方式:被测试Python的成语对于这种结构
if value <= 10:
print 1
elif value <= 13:
print 2
elif value <= 15:
print 3
elif value <= 24:
print 4
值没有落入任何图案。
不知道这是否是更Python,但是这可能会做同样的事情的另一种方式:
d = {1: [float('-inf'), 10], 2: [11, 13], 3: [14, 15], 4: [16, 24]}
[print i for i in d if value >= d[i][0] and value <= d[i][1]]
在这里,您编码的下限和上限为每个条件到字典和打印键对于value
所在的对应范围。
鉴于他们应该是'elif's - 你不想为所有支票建立一个清单 - 你想在第一个成功的支票上短路 –
(更不用说它不提供对于<= 10条件...) –
@JonClements词典中的第一件事符合<= 10条件,但该案例的下限可能不同。此外,这些范围是不相交的,这使得'价值'不可能满足多于一张支票。 – Antimony
在您详细说明如何接收输入,这些上边界与打印值之间的逻辑关系等等之后,会提出更pythonic,更干净,更易读的重构,清理代码实际上是软件开发过程的一部分。 – marmeladze
如果value <= v),None),你可以做'to_print = next((我为i,v在枚举中([10,13,15,24],1)'但这只是你的确切代码的映射正如@marmeladze所说 - 如果你想切换到较低/上限或者为每个if/elif等添加更多标准,那么它就很好,可读性强,而且非常灵活...所以 - 这一切都取决于 - 你认为当前代码有什么错误? –
@marmeladze这是一个通用的问题。如果你有一个任意值的列表,并且你希望根据值执行一些操作 – Psionman