3

できるだけ条件付き入力の最短コードを作るようにしています。
条件:数値は 0 より大きい必要があります。
入力:最初の数値によって次の入力の数が決まります。
例えば:

4
1
-2
3
-4

だから私はlist()に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

4 に答える 4

6

これを行う1つの方法は次のとおりです。

[x for x in (int(input()) for _ in range(int(input()))) if x > 0]
于 2012-05-17T14:09:01.187 に答える
0

ええと....コードゴルフ。:)

最短の試みで、パレンを置き忘れました。次のように、ネストされたリスト内包表記を使用して、これを少し短くすることもできます(それほどではありませんが)。

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

呼び出しにrange(input())キャストする必要はありません。'が渡されないint場合はとにかくエラーになるためです。rangeint

于 2012-05-17T14:51:42.783 に答える
0
filter(lambda x: x > 0, (int(input()) for i in range(int(input()))))
于 2012-05-17T14:08:27.017 に答える