数字をN分割する関数を作っています。
コードは
def N_splitter(seq, N): avg=len(seq) / float(N) out=[] last=0.0 while last<len(seq): out.append(seq[int(last):int(last+avg)]) last += avg return np.array(out)
が模範解答で、
N_splitter(range(14),3)
とすると、
array([range(0,4),range(4,9),range(9,14)],dtype=object)
と出力されます。
私としては、range(14)を使うのが、少し気持ち悪く、どうして
N_splitter(14,3)
として出来ないのかと思いました。range()なしの形で出力すると、オブジェクトに長さの概念がないとlen(seq)がエラーになってしまったので、len(seq)をseqに変えて、出力すると、次は
'int' object is not subscriptableというエラーが出ました。これは、上記のwhile文out.append(の行についてです。これはどう解決できますか。教えてください。
うまくいかないコードは
def splitter(seq, N): avg= seq/float(N) out=[] last=0.0 while last < seq: out.append( seq[int(last) : int(last + avg)]) last += avg return np.array(out)
です。エラーとして
'int' object is not subscriptable
が出ました。これはwhile文中のout.append( seq[int(last) : int(last + avg)])で出ました。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー