

この `for` 文ですが、内包表記にするにはどうすればよろしいでしょうか？

[code]

    x, n = map(int,input().split())
    num = [int(input()) for _ in range(n)]
    
    num1 = 0
    for i in num:
        num1 += i
        z = x - num1 
        print(z)
    
[/code]


CC BY-SA 4.0
2021-08-16T14:51:51.620
80848
2021-08-17T04:09:11.600
2021-08-16T16:20:59.830
3060
47752
question
python python3
内包表記にしたい


Python3.8 以降であれば `:=`(walrus operator/セイウチ演算子) を使って以下の様に書くことができます。

[code]

    num1 = 0
    _ = [print(x - (num1:=num1+i)) for i in num]
    
[/code]


CC BY-SA 4.0
2021-08-16T15:09:12.963
80849
2021-08-16T15:09:12.963
47127
80848
answer


[`itertools.accumulate()`](https://docs.python.org/ja/3/library/itertools.html#itertools.accumulate)を用いた実装が考えられます。計算結果はリストとして得られるため、print出力は別途調整してください。

[code]

    import itertools
    
    x, n = map(int,input().split())
    num = [int(input()) for _ in range(n)]
    
    z = [x - n for n in itertools.accumulate(num)]
    print(z)
    
[/code]


CC BY-SA 4.0
2021-08-17T04:09:11.600
80862
2021-08-17T04:09:11.600
49
80848
answer