Python >> Tutoriel Python >  >> Python

Python sum() - Un guide illustré simple

Résumer des nombres est l'une de ces tâches répétitives que vous devez répéter encore et encore dans vos projets de code pratiques.

Pour vous aider à accomplir cette tâche de manière concise, lisible et efficace, les créateurs de Python ont ajouté le sum() intégré fonction. Il additionne tous les éléments d'une liste Python ou de tout autre itérable d'ailleurs. (Documents officiels)

Syntaxe Python sum()

La syntaxe est sum(iterable, start=0) :

Argument Description
iterable Somme sur tous les éléments du iterable . Cela peut être une liste, un tuple, un ensemble ou toute autre structure de données qui vous permet d'itérer sur les éléments.
Exemple :sum([1, 2, 3]) renvoie 1+2+3=6 .
start (Facultatif.) La somme de toutes les valeurs dans le iterable sera ajouté à cette valeur de départ. La valeur de départ par défaut est 0.
Exemple :sum([1, 2, 3], 9) renvoie 9+1+2+3=15 .

Vidéo somme() Python

Découvrez le webinaire Python Freelancer et DÉMARREZ votre carrière de codeur !

Exemple de somme() en Python

Code :Voyons un exemple pratique !

lst = [1, 2, 3, 4, 5, 6]

print(sum(lst))
# 21

print(sum(lst, 10))
# 31

Explorons quelques détails importants concernant le sum() fonction en Python.

Python sum() Complexité temporelle

La complexité temporelle du sum() La fonction est linéaire dans le nombre d'éléments de l'itérable (liste, tuple, ensemble, etc.). La raison en est que vous devez parcourir tous les éléments de l'itérable et les ajouter à une variable de somme. Ainsi, vous devez "toucher" chaque élément itérable une fois.

Valeurs du dictionnaire Python sum()

Problème :Comment additionner toutes les valeurs d'un dictionnaire ?

Solution :Utilisez sum(dict.values()) pour additionner toutes les valeurs d'un dictionnaire.

customers = {'Alice': 10000,
             'Bob': 9900,
             'Carl': 21100}

# total sales:
total = sum(customers.values())

# print result:
print('Sales: ', total)
# Sales:  41000

Python sum() Liste des chaînes

Problème :Comment pouvez-vous additionner une liste de chaînes telles que ['python', 'is', 'great'] ? C'est ce qu'on appelle la concaténation de chaînes.

Solution :Utilisez le join() méthode des chaînes Python pour concaténer toutes les chaînes d'une liste. Le sum() la fonction ne fonctionne que sur les données d'entrée numériques.

Code  :L'exemple suivant montre comment "résumer" (c'est-à-dire concaténer) tous les éléments d'une liste de chaînes donnée.

# List of strings
lst = ['Bob', 'Alice', 'Ann']

print(''.join(lst))
# BobAliceAnn

print(' '.join(lst))
# Bob Alice Ann

Python sum() Liste des listes

Problème  :Comment pouvez-vous additionner une liste de listes telles que [[1, 2], [3, 4], [5, 6]] en Python ?

Solution  :Utilisez une simple boucle for avec une variable d'assistance pour concaténer toutes les listes.

Code  :Le code suivant concatène toutes les listes en une seule liste.

# List of lists
lst = [[1, 2], [3, 4], [5, 6]]

s = []
for x in lst:
    s.extend(x)
print(s)
# [1, 2, 3, 4, 5, 6]

Le extend() La méthode est peu connue en Python, mais elle est très efficace pour ajouter plusieurs éléments à une liste Python à la fois. Consultez mon tutoriel détaillé sur ce blog Finxter.

Python sum() Liste des tuples Element Wise

Problème :Comment résumer une liste de tuples, élément par élément ?

Exemple :Dites, vous avez la liste [(1, 1), (2, 0), (0, 3)] et vous voulez additionner les première et deuxième valeurs de tuple pour obtenir le "tuple sommé" (1+2+0, 1+0+3)=(3, 4) .

Solution :décompressez les tuples dans la fonction zip pour combiner les première et deuxième valeurs de tuple. Ensuite, additionnez ces valeurs séparément. Voici le code :

# list of tuples
lst = [(1, 1), (2, 0), (0, 3)]

# aggregate first and second tuple values
zipped = list(zip(*lst))
# result: [(1, 2, 0), (1, 0, 3)]

# calculate sum of first and second tuple values
res = (sum(zipped[0]), sum(zipped[1]))

# print result to the shell
print(res)
# result: (3, 4)

Besoin d'un rappel du zip() fonctionnement et déballage ? Consultez ces articles sur le blog Finxter :

  • Rafraîchissement des zips
  • Rappel sur le déballage

Tranche de liste Python sum()

Problème :Étant donné une liste. Résumez une tranche de la liste d'origine entre le début et les indices de pas (et en supposant également la taille de pas donnée).

Exemple :Donné est la liste [3, 4, 5, 6, 7, 8, 9, 10] . Résumez la tranche lst[2:5:2] avec start=2 , stop=5 , et step=2 .

Solution :Utilisez le découpage pour accéder à la liste. Ensuite, appliquez la fonction sum() sur le résultat.

Code :Le code suivant calcule la somme d'une tranche donnée.

# create the list
lst = [3, 4, 5, 6, 7, 8, 9, 10]

# create the slice
slc = lst[2:5:2]

# calculate the sum
s = sum(slc)

# print the result
print(s)
# 12 (=5+7)

Examinons un problème intéressant :résumer au conditionnel !

Condition de liste Python sum()

Problème :Donné est une liste. Comment additionner toutes les valeurs qui remplissent une certaine condition ?

Exemple :Dites, vous avez la liste lst = [5, 8, 12, 2, 1, 3] et vous voulez additionner toutes les valeurs supérieures à 4.

Solution :utilisez la compréhension de liste pour filtrer la liste afin que seuls les éléments qui satisfont à la condition restent. Ensuite, utilisez le sum() fonction pour additionner les valeurs restantes.

Code  :Le code suivant additionne toutes les valeurs qui satisfont une certaine condition (par exemple, x>4 ).

# create the list
lst = [5, 8, 12, 2, 1, 3]

# filter the list
filtered = [x for x in lst if x>4]
# remaining list: [5, 8, 12]

# sum over the filtered list
s = sum(filtered)

# print everything
print(s)
# 25

Besoin d'un rappel sur la compréhension des listes ? Consultez mon tutoriel détaillé sur le blog Finxter.

Erreurs de sum() Python

Un certain nombre d'erreurs peuvent se produire si vous utilisez le sum() fonction en Python.

Erreur de type :Python lance un TypeError si vous essayez d'additionner des éléments non numériques.

Par exemple :

# Demonstrate possible execeptions
lst = ['Bob', 'Alice', 'Ann']

# WRONG:
s = sum(lst)

Si vous exécutez ce code, vous obtiendrez le message d'erreur suivant :

Traceback (most recent call last):
  File "C:UsersxcentDesktopcode.py", line 3, in <module>
    s = sum(lst)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Python tente de concaténer des chaînes en utilisant la valeur de départ par défaut de 0 (un entier). Mais comme vous ne pouvez pas concaténer une chaîne avec un entier, cela échoue.

Si vous essayez de "pirater" Python en utilisant une chaîne vide comme valeur de départ, vous obtiendrez l'exception suivante :

# Demonstrate possible execeptions
lst = ['Bob', 'Alice', 'Ann']

# WRONG:
s = sum(lst, '')

Sortie :

Traceback (most recent call last):
  File "C:UsersxcentDesktopcode.py", line 5, in <module>
    s = sum(lst, '')
TypeError: sum() can't sum strings [use ''.join(seq) instead]

Vous pouvez vous débarrasser de toutes ces erreurs en additionnant uniquement les éléments numériques de la liste.

Pour plus d'informations sur le join() méthode, consultez cet article de blog.


Post précédent