2013-11-04 67 views
0

我在嘗試使用列表重寫此代碼。如果I> 4,則升級索引會崩潰程序。如何使用列表使這個代碼更小?任何幫助表示讚賞。在Python中使用列表

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 

回答

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 
0

此外,以@Martijn Pieters的回覆,如果你的價值觀遵循一個特定的模式,您可以創建列表時使用範圍():

>>> 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]