考虑以下示例:
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中建议代码来执行此操作,那将会很有用.........
答案 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]