447 Stimmen

Summieren einer Liste von Zahlen in Python

Ich habe eine Liste von Nummern wie [1,2,3,4,5...] und ich möchte Folgendes berechnen (1+2)/2 und für die zweite, (2+3)/2 und die dritte, (3+4)/2 , und so weiter. Wie kann ich das tun?

Ich möchte die erste Zahl mit der zweiten addieren und durch 2 dividieren, dann die zweite mit der dritten addieren und durch 2 dividieren, und so weiter.

Außerdem: Wie kann ich eine Liste von Zahlen zusammenfassen?

a = [1, 2, 3, 4, 5, ...]

Ist es:

b = sum(a)
print b

um eine Nummer zu bekommen?

Das funktioniert bei mir nicht.

4voto

tzot Punkte 86792

Die Verwendung des pairwise itertools-Rezept :

import itertools
def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = itertools.tee(iterable)
    next(b, None)
    return itertools.izip(a, b)

def pair_averages(seq):
    return ( (a+b)/2 for a, b in pairwise(seq) )

3voto

Jochen Ritzel Punkte 99416

Generatoren sind eine einfache Möglichkeit, dies zu schreiben:

from __future__ import division
# ^- so that 3/2 is 1.5 not 1

def averages( lst ):
    it = iter(lst) # Get a iterator over the list
    first = next(it)
    for item in it:
        yield (first+item)/2
        first = item

print list(averages(range(1,11)))
# [1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]

3voto

chepner Punkte 440093

In Python 3.8 kann der neue Zuweisungsoperator verwendet werden

>>> my_list = [1, 2, 3, 4, 5]
>>> itr = iter(my_list)
>>> a = next(itr)
>>> [(a + (a:=x))/2 for x in itr]
[1.5, 2.5, 3.5, 4.5]

a ist ein laufender Verweis auf die vorherige Wert in der Liste, daher wird er mit dem ersten Element der Liste initialisiert und die Iteration erfolgt über die Rest der Liste, Aktualisierung der a nachdem es in jeder Iteration verwendet wurde.

Ein expliziter Iterator wird verwendet, um die Erstellung einer Kopie der Liste mit my_list[1:] .

3voto

Aamir M Meman Punkte 1302

Wir machen es Anfängern leicht:-

  1. Le site global ermöglicht es, die globale Variable message innerhalb der Hauptfunktion zuzuweisen, ohne eine neue lokale Variable zu erzeugen
    message = "This is a global!"

def main():
    global message
    message = "This is a local"
    print(message)

main()
# outputs "This is a local" - From the Function call
print(message)
# outputs "This is a local" - From the Outer scope

Dieses Konzept wird als Beschattung

  1. Summieren einer Liste von Zahlen in Python
nums = [1, 2, 3, 4, 5]

var = 0

def sums():
    for num in nums:
        global var
        var = var + num
    print(var)

if __name__ == '__main__':
    sums()

Ausgänge = 15

3voto

tagoma Punkte 3610
import numpy as np    
x = [1,2,3,4,5]
[(np.mean((x[i],x[i+1]))) for i in range(len(x)-1)]
# [1.5, 2.5, 3.5, 4.5]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X