如何根据范围过滤数字?

时间:2019-04-26 12:47:11

标签: python

我有一个列表,其中有些数字是这样的:

["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

我试图真的不使用任何程序包或模块,我希望我的代码不包含程序包和模块...非常感谢您的帮助。

3 个答案:

答案 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)