最短的输入代码

时间:2012-05-17 14:04:18

标签: python optimization input python-3.x

我正在尽可能地为条件输入制作最短的代码 条件:该数字应大于0 输入:第一个数字决定下一个输入的数量 例如:

4
1
-2
3
-4

所以我想仅列出1(3)和列表()。

这是我的代码:

n=int(input())
t=[]
for i in range(n):
    x = int(input())
    if(x>0):
        t.append(x)
print(t)

我想知道它是否可以缩短 我有想法,但它没有像我预期的那样工作 - “语法错误”:

n=int(input())
t=[x=int(input()) for x in range(n) if(x)>0)]
print(t)

编辑:忘了。我正在使用python3.1 ......

4 个答案:

答案 0 :(得分:6)

这是一种方法:

[x for x in (int(input()) for _ in range(int(input()))) if x > 0]

答案 1 :(得分:0)

filter(lambda x: x > 0, (int(input()) for i in range(int(input()))))

答案 2 :(得分:0)

Eugh ....代码高尔夫。 :)

你在最短的尝试中错位了parens。你也可以通过使用嵌套列表推导来缩短一点(尽管不多),如下所示:

t = [ x for x in [int(input()) for y in range(input())] if x > 0]
print t

range(input())调用不需要转换为int,因为如果range未通过int,则无论如何都会出错。

答案 3 :(得分:-2)

print sum(max(0,input())for _ in range(input()))