我有一个列表,其中有些数字是这样的:
["0022", "1144", "1355", "0251"...]
这些数字表示时间,0022
表示12:22
,依此类推。
现在,我需要根据小时数过滤这些时间。例如,我的范围是凌晨2点到凌晨4点,因此我需要0251
处于此范围内(因为它代表02:51)。
我尝试执行以下操作:
for i in mylist:
if(i in range(200,400)):
print(i)
if(i in range(1000,1200)):
print(i)
之所以这样做,是因为我认为0251
可以解释为251
,但是我没有得到任何输出。第二个if语句应返回1144
。
我试图真的不使用任何程序包或模块,我希望我的代码不包含程序包和模块...非常感谢您的帮助。
答案 0 :(得分:2)
您的列表包含字符串,并且您的代码正在尝试对数字值进行过滤。首先将它们转换为整数。
mylist = [int(i) for i in mylist]
for i in mylist:
....etc...
答案 1 :(得分:2)
当前代码的问题是,您正在查看表示时间的 string 是否在 integers 范围内。
最安全的做法是将其转换为一个时间,然后检查该小时的时间范围
from datetime import datetime
for i in mylist:
hour = datetime.strptime(i, '%H%M').hour
if 2 < hour < 4:
print(i)
答案 2 :(得分:1)
Id假定是因为您使用200-400作为列表的索引(所以mylist [200] -mylist [400])。相反,我会像
for i in mylist:
if int(i)>200 and int(i)<400:
print(i)
elif int(i)>1000 and int(i)<1200:
print(i)