显示b / w特定范围的数字?

时间:2013-09-10 03:16:51

标签: python

考虑以下示例:

      l = [11, 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 30, 40]

现在我需要显示b / w 12到16之间的数字,所以输出必须是

        [12, 13, 14, 14, 15, 16]

我写了一个示例代码,但它显示了整个输入:

       l = [11,12,13,14,14,15,16,12,17,18,19,19,20,30,40]
       for i in range(len(l)):
            if ( l[i]==12):
                 print l
输出是:

        [11,12,13,14,14,15,16,12,17,18,19,19,20,30,40]

如果有人可以在python中建议代码来执行此操作,那将会很有用.........

3 个答案:

答案 0 :(得分:4)

print [x for x in l if 12 <= x <= 16]

答案 1 :(得分:2)

l = [11,12,13,14,14,15,16,12,17,18,19,19,20,30,40]
for i in range(len(l)):
    if ( l[i]==12):
        print l

此代码说,“当您在列表中找到等于12的项目时,请打印整个列表。”这就是为什么你要打印整个列表的原因:这就是你告诉Python要做的事情。您可能希望打印l[i]而不是l,因为这是您正在查看的数字。

您现在可以调整if语句,只选择12到16之间的数字:

if 12 <= l[i] <= 16:

现在你已经有了数字,你可以处理格式化。获得所需输出的最简单方法是建立一个列表并在最后打印它:

l = [11,12,13,14,14,15,16,12,17,18,19,19,20,30,40]
o = []
for i in range(len(l)):
    if 12 <= l[i] <= 16:
        o.append(l[i])
print o

之后还可以进行其他改进。例如,您可以直接迭代列表中的数字,而不是列表索引,否则您不需要:

for n in l:
    if 12 <= n <= 16:
        o.append(n)
print o

现在你可以将它写成列表理解,这是一种Python语言功能,旨在使构建列表的常见模式更加简单:

print [n for n in l if 12 <= n <= 16]

答案 2 :(得分:0)

l = [11, 12, 13, 14, 14, 15, 16, 17, 18, 19, 19, 20, 30, 40]

print [ f for f in l if f in xrange(12, 17) ]

如果您担心in xrange(12, 17)会产生额外的内存使用量,请参阅this question

的已接受答案

输出:

[12, 13, 14, 14, 15, 16]