Bonsoir,
je ne parviens pas à coder la somme deux à deux des termes d'une liste de nombre en Python.
Par exemple, si l'on a liste1 = [1,2,3,4,5,6,7,8], je voudrais obtenir une seconde liste liste2 = [3,7,11,15] à l'aide d'une boucle for
J'ai essayé pas mal de choses en vain.
Je vous remercie pour votre aide
Par exemple:
liste2 = []
for i in range(len(liste1)):
liste2 = liste2 + liste1[i] + liste[i+1]
ne retourne pas ce que je souhaite.
Le problème que je ne parviens pas à contourner porte sur les indices i. Cela me retourne la somme du 1er et 2ème, du 2ème et du 3ème etc....
Or je souhaiterais [1er+2mè, 3ème+4éme,....]
Merci lafol,
voilà ce que j'ai fit et qui semble marcher
n = int(len(liste1) / 2)
liste2 = []
for i in range(n):
liste2 += [(valeurs[2*i]+valeurs[2*i+1])]
Si cela vous semble correct?
Je vous souhaite une bonne soirée ainsi qu'à GBZM
Tu peux définir ta fonction Sommedeuxadeux récursivement :
Si la longueur de L est inférieure ou égale à 1, Sommedeuxadeux(L)=L
Si la longueur de L est strictement plus grande que 1, Sommedeuxadeux (L) est la liste dont le premier terme est L[0]+L[1} et la suite est Sommedeuxadeux de la liste obtenue à partir de L en commençant à l'indice 2.
Je te laisse écrire proprement ça en python.
bonjour à tous,
de passage
J'ai une dernière question, technique, que je n'arrive pas à résoudre même en lisant la doc matplotlib.
J'ai une liste de valeurs, issue d'un calcul d'une fonction y=f(x). Je voudrais représenter les éléments de cette liste par des points à l'aide de scatter. Seulement, je souhaite affecter une couleur différente pour les valeurs positives et négatives de y.
Si je trie la liste, et demande de dessiner le graphe, j'ai une erreur me disant que les listes crées - ypos et yneg- n'ont évidemment pas le même nombre d'éléments que la liste des x.
Je vous remercie pour votre aide.
re-,
je ne connais pas bien matplotlib.
mais il me semble que le problème provient de la façon sont tu as "trié" ta liste.
à mon avis, il serait judicieux de scinder la liste en 2 : une pour les y négatifs (et sa liste de x correspondants, bien sûr !),
et une pour les y>0
puis tu appliques l'option c="ta_couleur" sur scatter pour chaque liste séparément
... enfin, si j'ai bien compris le truc...
montre ton bout de code si possible, on y verra plus clair.
je laisse la main si d'autres savent mieux
Bonsoir Carita,
je vous remercie pour votre disponibilité. Voilà mon code.
Il s'agit du calcul de l'exposant de Lyapounov. et je définie les listes R et Y . Comment extraire les couples de valeurs et les trier?
Merci par avance.

En fait, je souhaite représenter les valeurs négatives en noir, et les valeurs positives en rouge. J'ai tracé la ligne des valeurs Y = 0.
salut
pour ton probleme de liste un équivalent en vba pour t'inspirer
Tu devrais, je pense, créer une liste de couleurs, disons C, à partir de ta liste Y avec C[i] = "black" si Y[i]<0 et C[i]= "red" sinon, et utiliser l'option c=C dans scatter.
bonjour
je ne suis pas fan de la façon dont tu as défini les fonctions f et prime...
pour les couleurs :
tu as 2 listes :
- pour les abscisses : un array, donc une liste indicée, par linspace
- pour les ordonnées : une liste par compréhension, complétée dans l'ordre des 2000 abscisses
je n'ai pas essayé, mais il me semble que tu peux jouer avec ces 2 listes X et Y et les indices,
pour les scinder en 4 listes, que j'appelle (abusivement, pour les x)
x_neg et y_neg
x_pos et y_pos
---
il y a une autre façon de faire : dans le return, renvoyer un couple plutôt que l'ordonnée seule :
return (r,l/n)
donc Y est ta liste de tous les points
reste à scinder, en utilisant les listes par compréhension munie d'une condition
par ex, pour les y<0 :
x_neg = [a for (a,b) in Y if b<=0]
y_neg = [b for (a,b) in Y if b<=0]
idem pour x_pos et y_pos
enfin, pour l'affichage :
plt.scatter(x_neg,y_neg, s=1,c='black')
et sa petite soeur en rouge pour les positifs
Un grand merci à toutes et tous pour votre aide et vos pistes que je vais retravailler.
Merci Carita pour l'astuce sur le return de la fonction.
Je cherchais à faire cela, en vain car je pouvais trier les mais sans pouvoir les associer à un x.
Bonne journée.
de rien
... revois tes def pour les fonctions f et fprime.
à ma connaissance, il n'est pas très orthodoxe de les définir à l'intérieur de ta fonction lyapunov.
def f(r,x):
return r*(1-x)*x
def fprime(r,x):
return r*(1-2*x)
def lyapunov(r,x_0,n):
x=x_0
l=fprime(r,x_0)
etc.
----
pour faire suivre gentiment ta variable locale r, il te suffit de :
1) la rajouter en argument dans tes 2 fonctions : par ex
def f(r,x):
return r*(1-x)*x
note : l'idéal est toutefois de changer le noms des variables arguments dans les fonctions
2) sans oublier de passer l'argument r lors de l'appel des fonctions : par ex
x=f(r,x)
l=fprime(r,x_0)
etc.
bonne continuation.
... juste pour le fun...
en reprenant l'idée du return l/n (ordonnée seule, sans le couple),
on peut récupérer nos 4 listes de plusieurs façons.
parmi les plus "synthétisées" (sans boucle....etc.), celle-ci fonctionne :
on récupère la liste des indices des y>0 (resp. y<=0) dans un tableau np.where(np.array(Y) > 0),
pour créer la liste des x correspondants.
y_pos = [b for b in Y if b>0]
x_pos = [R[i] for i in np.where(np.array(Y) > 0)[0]]
y_neg = [b for b in Y if b<=0]
x_neg = [R[i] for i in np.where(np.array(Y) <= 0)[0]]
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :