Toutes les réponses ont fait preuve d'une approche programmatique et générale. Je suggère une approche mathématique spécifique à votre cas. Cela peut être plus rapide en particulier pour les longues listes. Cela fonctionne parce que votre liste est une liste de nombres naturels jusqu'à n
:
Supposons que nous avons les nombres naturels 1,2,3,....,10
:
>>> nat_seq = [1,2,3,4,5,6,7,8,9,10]
Vous pouvez utiliser la fonction sum
sur une liste:
>>> print sum(nat_seq)
55
Vous pouvez également utiliser la formule n*(n+1)/2
où n
est la valeur du dernier élément de la liste (ici: nat_seq[-1]
), de sorte que vous évitez d'itérer sur l'élément s:
>>> print (nat_seq[-1]*(nat_seq[-1]+1))/2
55
Pour générer la séquence (1+2)/2, (2+3)/2, ..., (9+10)/2
vous pouvez utiliser un générateur et la formule (2*k-1)/2.
(notez le point pour rendre les valeurs des points flottants).Vous devez sauter le premier élément lors de la génération de la nouvelle liste:
>>> new_seq = [(2*k-1)/2. for k in nat_seq[1:]]
>>> print new_seq
[1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5]
Ici aussi, vous pouvez utiliser la fonction sum
sur cette liste:
>>> print sum(new_seq)
49.5
Mais vous pouvez aussi utiliser la formule (((n*2+1)/2)**2-1)/2
, donc vous pouvez éviter itérer sur les éléments:
>>> print (((new_seq[-1]*2+1)/2)**2-1)/2
49.5
Combien de temps cette liste? comment sont les valeurs aléatoires, entre 0 et 1? – kevpie