Python列表超出范围

时间:2016-03-07 04:21:32

标签: python list

如何将列表中的项目超出其范围?例如,如果我在下午2点设置闹钟并且我希望它在59小时内响起,那么现在几点钟?

我希望我的代码看起来像这样,但它超过了25的范围:

time = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
print(time[15+59])

3 个答案:

答案 0 :(得分:1)

这与Python无关,而是模块化算法:

print(time[(14 - 1 + 59) % 24])

打印

1

答案 1 :(得分:0)

使用modulo获取所需索引的剩余部分除以元组的长度:

 time = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24)
 print(time[(15+59) % len(time)])

答案 2 :(得分:0)

np.roll会移动您的iterable中的所有值,从而回答您原来的问题。

import datetime as dt

>>> dt.datetime(2016, + dt.timedelta(hours=59)
datetime.datetime(2016, 1, 4, 1, 0)  # 1 a.m.

>>> np.roll(time, -59)[14 - 1]  # -1 because of zero based indexing.
1  # 1 a.m.

例如:

>>> np.roll(time, -1)
array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
       19, 20, 21, 22, 23, 24,  1])

当然,我仍然会使用modulo更简单的答案,即

time(hour - 1 + hour_offset) % 24.