如何使用范围内的浮点数运行循环

时间:2019-05-28 10:19:02

标签: python-2.7 list for-loop

我尝试运行我的长代码,但是想法很短。

我的问题需要两个条件。 i在范围内的第一个。第二个使用列表中的所有值

m = [181.452, 147.0213, 480.33, 1000.05]
for i in m:
    if i in range(0 , 200):
        print ('Red')
    if i in range(201 , 500):
        print ('white')
    if i in range(501 , 1000):
        print ('green')
    if i in range(1000 , 1500):
        print ('blue')

您可以看到列表int中的值何时出现:

m = [181, 147.0213, 480.33, 1000.05]
for i in m:
    if i in range(0 , 200):
        print ('Red')
    if i in range(201 , 500):
        print ('white')
    if i in range(501 , 1000):
        print ('green')
    if i in range(1000 , 1500):
        print ('blue')

输出到第二个代码:Red

1 个答案:

答案 0 :(得分:1)

您正在使用range(),它返回int值的迭代器,因此您的代码无法正常工作。这意味着如果您写过

if i in range(0,5)

然后它将翻译为:

if i in (0, 1, 2, 3, 4)

因此,此处未捕获您的浮点值。同样,当您有比较运算符时,也不宜使用迭代器进行比较。

使用以下代码:

m = [181.452, 147.0213, 480.33, 1000.05]

for i in m:
    if 0 <= i <= 200:     # this is pythonic way to write "if i >= 0 and i <= 200"
        print('Red')
    elif 200 < i <= 500:
        print ('white')
    elif 500 < i <= 1000:
        print ('green')
    elif 1000 < i <= 1500:
        print ('blue')

输出:

Red
Red
white
blue