0

考虑这个例子:

      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 中的代码来执行此操作,那将很有帮助.........

4

3 回答 3

4
print [x for x in l if 12 <= x <= 16]
于 2013-09-10T03:19:41.060 回答
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]
于 2013-09-10T03:27:09.700 回答
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)的已接受答案

输出:

[12, 13, 14, 14, 15, 16]
于 2013-09-10T03:33:56.117 回答