如何将列表中的项目超出其范围?例如,如果我在下午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])
答案 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.