2016-11-28 14 views
0

私はを解決しようとするが、私はこのコードでTypeErrorを取得するPythonの行使10.3Pythonの:TypeError例外:「int型のオブジェクトが反復可能ではありません(Pythonの10.3を考える)

Write a function that takes a list of numbers and returns the cumulative sum; that is, a new list where the ith element is the sum of the first i + 1 elements from the original list. For example, the cumulative sum of [1, 2, 3] is [1, 3, 6] .

考える:

def culm_sum(num): 
    res= [] 
    a = 0 
    for i in num: 
     a += i 
     res += a 
    return res 

私はculm_sum([1, 2, 3])を呼び出すと、私は

TypeError: 'int' object is not iterable 

はありがとう取得!

+0

を、それがに複数の回答を持っていますあなたの質問 http://stackoverflow.com/questions/494594/how-to-write-the-fibonacci-sequence-in-python –

答えて

3

あなたはあなたのリストに追加するために使用しているコードが正しくありません。

res += a 

は、代わりにres += aと間違って何

res.append(a) 

しますか? Pythonはaが反復可能であることを期待し、舞台裏での同等行いしようとします:

for item in a: 
    res.append(a) 

をしかし、あなたはTypeErrorを得るよう以来aは、反復可能ではありません。

メモ私は当初、あなたの変数にはfor i in num:というエラーがあったと思っていました。それは単一の整数のように聞こえる。コードの読者が混乱しないように、数字のリストなので少なくとも複数(nums)にしてください。

+1

こんにちは、あなたの助言と私の記事の編集に感謝します!前にそれを見なかった!それは今働きます!また、変数名に関する助言に感謝します! – trig

0

extendあなたのリストはintであり、これは反復可能ではないため、エラーです。これを行うには、extendへの正しい方法

res.append(a) 

または::あなたはappendメソッドを使用して、リストに要素を追加する必要があり、このスレッドをチェックアウト

res += [a] 
+0

別の単純な代替案が存在するときに、一時的なオブジェクトを不必要に作成することは悪い習慣であるため、私はその答えに 'res + = [a]'について言及していません。 –

+0

[a]に関するアドバイスをありがとうございます。それも動作します! – trig

関連する問題