acokikoy's notes

最近気になる=[NoCode, Shopify], I am..=[Python, ウクレレ, マニュアル車, CMS] LoveなWebディレクター

毎朝Codewars@2019.06.06(木): Square(n) Sum

毎朝ちびちびCodewars。

Square(n) Sum [8級] www.codewars.com

今日のお題:

"""
リストnumbersで与えられた各要素を二乗し、それらの合計値を返す

def square_sum(numbers):
Args:  
    numbers (list):  要素はint型
Returns:  
    各要素の2乗の合計値 (int):  
"""

Pythonを始めて9月で1年。
この辺でメリハリつけようと Python3 エンジニア認定基礎試験 を受けることにした。

受験勉強に時間を割きたいから、Codewarsはしばらくレベルを落として(7,8級あたり)、
通勤時間中 Pythonista 3 で書ける程度の中心に。
8級さすがに簡単。嬉しいっす (^^)。

Codewars はレベルが上がると ロジック考えるところとか、レアな例外を適切に処理するところとかに結構時間を取られるんだよね。

コード

リスト内包表記で書く

def square_sum(numbers):
    return sum([n**2 for n in numbers])

ジェネレータ式で書く

上記はリスト内包表記を使ったが、 sum()にはジェネレータ式 (n**2 for n in numbers) で渡すことも可能。
ジェネレータ式を関数の唯一の引数として渡す場合には、丸括弧を省略できるので次のようになる。

def square_sum(numbers):
    return sum(n**2 for n in numbers)