0

これは単純なリストの例です

mylist = [2,5,9,12,50]

最初の要素 (この場合は 2) をその隣の要素に追加します。それは数字の 5 です。結果 (2+5=7) は、次の要素 (私の例では数字の 9) に追加する必要があります。結果は次の要素などに追加する必要があります...

私は今このスニペットを持っていますが、それは機能していますが、もっとシンプルで良い方法があるはずです:

newlist = [5, 9, 12 , 50]
counts = 0
a = 2
while (counts < 5):
    a = a + mylist[n]
    print a
    counts = counts + 1

出力は次のとおりです。

7
16
28
78

次のスニペット:

mylist = [2, 5, 9, 12, 50]
lines_of_file = [4, 14, 20, 25, 27]
sum_list = []
outcome = 0

for element in mylist:
    outcome = outcome + element
    sum_list.append(outcome)

fopen = ('test.txt', 'r+')
write = fopen.readlines()

for element, line in zip(sum_list, lines_of_file):
    write[line] = str(element)

fopen.writelines()
fopen.close()
4

6 に答える 6

1

次のような簡単なことを行うことができます。

>>> mylist = [2,5,9,12,50]
>>> 
>>> total = 0  # initialize a running total to 0
>>> for i in mylist:  # for each i in mylist
...     total += i  # add i to the running total
...     print total  # print the running total
... 
2
7
16
28
78

numpyこれを行うための優れた機能があります。つまり、次のcumsum()とおりです。

>>> import numpy as np
>>> np.cumsum(mylist)
array([ 2,  7, 16, 28, 78])

を使用list(...)して、配列をリストに戻すことができます。

于 2013-08-14T16:59:22.830 に答える
0

考えられる解決策の 1 つを次に示します。

#!/usr/local/bin/python2.7

mylist = [2,5,9,12,50]
runningSum = 0

for index in range(0,len(mylist)):
    runningSum = runningSum + mylist[index]
    print runningSum
于 2013-08-14T17:01:56.137 に答える
0

別のバージョンは次のとおりです。

newlist = [2,5,9,12,50]

for i in range(1,len(newlist)):
    print sum(newlist[:i+1])

が含まれていないことに注意してください2。ただし、合計を何度も計算する可能性があります(コンパイラがどれほど賢いかはわかりません)。

出力:

7
16
28
78
于 2013-08-14T17:19:56.617 に答える
0

sum()シーケンスのすべての値を合計するために使用します。

>>> sum([2,5,9,12,50])
78

しかし、現在の合計を保持したい場合は、リストをループするだけです:

total = 2
for elem in newlist:
    total += a
    print total

これは、リストの作成にも使用できます。

total = 2
cumsum = []
for elem in newlist:
    total += a
    cumsum.append(total)
于 2013-08-14T16:57:23.917 に答える
0

ファイル内の特定の位置に書き込みたい場合は、これを試してください:

numbers.txt次のような 10 行のファイルがあるとします。

0
0
0
0
0
0
0
0
0
0

次に、これを使用します。

original_list = [1, 3, 5, 7, 9]
lines_to_write = [2, 4, 6, 8, 10]  # Lines you want to write the results in
total = 0
sum_list = list()

# Get the list of cumulative sums
for element in original_list:
    total = total + element
    sum_list.append(total)
# sum_list = [1, 4, 9, 16, 25]

# Open and read the file
with open('numbers.txt', 'rw+') as file:
    file_lines = file.readlines()
    for element, line in zip(sum_list, lines_to_write):
        file_lines[line-1] = '{}\n'.format(element)
    file.seek(0)
    file.writelines(file_lines)

次に、次numbers.txtのようになります。

0
1
0
4
0
9
0
16
0
25
于 2013-08-14T17:16:04.340 に答える
0

リストの最初の項目 (番号 2) を表示したくない場合は、次のソリューションで実行できます。

mylist = [2,5,9,12,50]

it = iter(mylist)
total = it.next() # total = 2, first item
for item in it:
    total += item
    print total
于 2013-08-14T17:40:49.560 に答える