ninestarsの日記: 配列の隣接する2項にそれぞれ演算を施した配列 4
日記 by
ninestars
弾さんとこで見つけたので python でも書いてみるテスト。
a = [1,2,3,4,5]
# ベタに要素数を数える場合
[a[n-1]+a[n] for n in range(1, len(a))]
#zipを使ってみた場合
[sum(x) for x in zip(a[1:], a[:-1])]
まぁ言語に標準装備するほどではないね。
弾さんとこで見つけたので python でも書いてみるテスト。
a = [1,2,3,4,5]
# ベタに要素数を数える場合
[a[n-1]+a[n] for n in range(1, len(a))]
#zipを使ってみた場合
[sum(x) for x in zip(a[1:], a[:-1])]
まぁ言語に標準装備するほどではないね。
物事のやり方は一つではない -- Perlな人
map()でおk (スコア:1)
最初はitertools.tee()を使ってどうこう、とか考えていたんですがmap()で楽勝です。
map(lambda x, y: x + y, a, a[1:])
Re:map()でおk (スコア:1)
map、lambdaまではなんとかなるけど、配列スライスがいまいち発想できないんだよね...orz
M-FalconSky (暑いか寒い)
Re:map()でおk (スコア:1)
提示のコードでは TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' になりますな。
map(lambda x, y: x + y, a[:-1], a[1:])
ですかね。
Re:map()でおk (スコア:1)
Python3では当方ので期待通りの結果が得られますが、Python2では例外が発生するようです。
2だと「itertools.imap()でおk」でした。
長さの違うシーケンスl1, l2を引数にしてmap(func, l1 ,l2)した場合、Python2では足らない部分をNoneで補ってfuncを呼ぶんでした。