如何根据范围过滤数字



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

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

我正在尝试真正不使用任何包或模块,我希望我的代码不受包和模块的影响......任何帮助都非常感谢。

列表包含字符串,代码正在尝试筛选数值。首先将它们转换为整数。

mylist = [int(i) for i in mylist]
for i in mylist:
     ....etc...

当前代码的问题在于,您正在查找表示时间的字符串是否在整数范围内。

最安全的做法是将其转换为时间,然后检查该时间小时的范围

from datetime import datetime
for i in mylist:
    hour = datetime.strptime(i, '%H%M').hour
    if 2 < hour < 4:
         print(i)

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)

最新更新