0

我正在尝试使用列表重写此代码。如果 I > 4,Raise index 会使程序崩溃。如何使用列表使此代码更小?任何帮助表示赞赏。

if (I == 0):
  J = -12
elif (I == 1):
  J = 24
elif (I == 2):
  J = -6
elif (I == 3):
  J = 193
elif (I == 4):
  J = 87
else:
  raise IndexError
4

2 回答 2

9

只需使用具有以下可能值的列表J

J_values = [-12, 24, -6, 193, 87]
J = J_values[I]

如果超出范围,则会引发IndexError异常I,因此大于 4:

>>> J_values = [-12, 24, -6, 193, 87]
>>> J_values[2]
-6
>>> J_values[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

负索引将从列表末尾开始计算;-1作为最后一个元素:

>>> J_values[-1]
87
于 2013-11-04T11:03:42.090 回答
0

除了@Martijn Pieters 的回复,如果您的值遵循特定模式,您可以在创建列表时使用 range() :

>>> J_VALUES = range(15)
>>> J_VALUES
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
>>>
>>> J_VALUES = range(-5, 15, 2)
>>> J_VALUES
[-5, -3, -1, 1, 3, 5, 7, 9, 11, 13]
于 2013-11-04T11:25:20.720 回答