1

2.7を実行しているPython初心者

新しい値が追加されるたびに合計されるリストが必要です。ただし、属性エラーが発生し続けます。「int」オブジェクトには「append」関数がありません。基本的な問題(整数に追加できない)は理解していますが、回避策を見つけたいと思います。解決策はありますか?

私のコードの簡略化されたバージョン、そして私が避けたい可能な解決策。

my_list = sum([])

def myfunction (i):
    return i 

thing = myfunction (1)
my_list.append(thing)

thing2 = myfunction (2)
my_list.append(thing2)

def function_2 (a,b):
    #function which uses my_list

私は次の解決策を実行できると思いますが、それを避けたいと思います(既存のコードに干渉します)。

my_list = []
summed_my_list = sum (mylist)

def myfunction (i):
    return i 

thing = myfunction (1)
my_list.append(thing)

thing2 = myfunction (2)
my_list.append(thing2)
4

2 に答える 2

1

リストが必要ない場合、質問は簡単です。必要なのは単に

total += value 

各ステップで。

リストから派生したクラス

リストと合計(自動更新)の両方が必要な場合は、リストから派生したクラスを作成できます。たとえば、リストに追加すると自動合計する必要があります。

class mylist(list):
    tot = 0
    def append(self, value):
        super(mylist, self).append(value)
        self.tot += value

使用例

#!/usr/bin/python

class mylist(list):
  tot = 0
  def append(self, value):
    super(mylist, self).append(value)
    self.tot += value


a = mylist()
a.append(1)
a.append(20)
print a.tot
print a

出力:

21
[1,20]
于 2012-08-03T19:08:27.067 に答える
0

この行はあなたの問題です:

my_list = sum([])

これは整数を返します0。リストを初期化するだけです。

my_list = []

そしてそれに追加します。

現在の合計も保持したい場合は、合計に別の変数を設定します。

my_total = 0

my_total += new_number

そして、合計に新しい整数を追加してリストに追加する単一のメソッドがあります。

于 2012-08-03T19:03:29.707 に答える