我正在尽可能地为条件输入制作最短的代码
条件:该数字应大于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 ......
答案 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()))