Soustraire 2 éléments d'une même liste?
Fermé
nathaniel
-
Modifié le 7 févr. 2020 à 09:28
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 5 févr. 2020 à 21:10
yg_be Messages postés 23361 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 - 5 févr. 2020 à 21:10
A voir également:
- Soustraire deux listes python
- Citizen code python avis - Accueil - Outils
- Deux ecran pc - Guide
- Deux comptes whatsapp - Guide
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
2 réponses
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
Ambassadeur
1 556
4 févr. 2020 à 09:13
4 févr. 2020 à 09:13
bonjour, si tu veux comprendre ce que fait ton programme, ajoute
print(liste)juste avant la ligne qui te donne une erreur.
Bonsoir,
> pour trouver les 2 entiers les plus proche
Les entiers les plus proches de quoi ?
Pourquoi faire des suppressions pour trouver des valeurs d'une liste plus proches de telle valeur ?
> pour trouver les 2 entiers les plus proche
Les entiers les plus proches de quoi ?
Pourquoi faire des suppressions pour trouver des valeurs d'une liste plus proches de telle valeur ?
Bonjour,
Si tu dois toujours avoir 2 valeurs proches, alors autant initialiser une liste à 2 éléments, et changer ces valeurs si une autre est plus proche.
Il y aura une optimisation à faire afin de ne pas recalculer proches_dif à chaque tour.
Un autre problème se pose.
Si on a
Si tu dois toujours avoir 2 valeurs proches, alors autant initialiser une liste à 2 éléments, et changer ces valeurs si une autre est plus proche.
import random nombres = random.sample(range(1, 501), 20) n = 200 proches = [1000] * 2 for nombre in nombres: dif = abs(n - nombre) proches_dif = [abs(p - n) for p in proches] maxi = max(proches_dif) if dif < maxi: proches[proches_dif.index(maxi)] = nombre print(nombres) print(proches)
Il y aura une optimisation à faire afin de ne pas recalculer proches_dif à chaque tour.
Un autre problème se pose.
Si on a
n = 200et
proches = [210, 190]on souhaite insérer une valeur plus proche de n par exemple 205, quelle valeur supprimer ? Vu que toutes deux sont à une différence de 10.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
>
trifou
5 févr. 2020 à 11:48
5 févr. 2020 à 11:48
moi je ferais ainsi:
import random quantite=40 minimum,maximum=-50,50 nombres = random.sample(range(minimum, maximum), quantite) delta = abs(maximum-minimum) for n1 in range(quantite): for n2 in range(n1+1,quantite): dif = abs(nombres[n1]-nombres[n2]) if delta > dif: delta=dif positions=(n1,n2) proches=(nombres[n1],nombres[n2]) print(nombres) print(delta,positions,proches)
trifou
>
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
5 févr. 2020 à 20:10
5 févr. 2020 à 20:10
Bonsoir,
Oui, ça fonctionne, mais je n'ai pas compris pourquoi tu es parti en prenant les valeurs les plus proches de la 1ère valeur de la liste et non une valeur arbitraire.
Oui, ça fonctionne, mais je n'ai pas compris pourquoi tu es parti en prenant les valeurs les plus proches de la 1ère valeur de la liste et non une valeur arbitraire.
yg_be
Messages postés
23361
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 novembre 2024
1 556
>
trifou
5 févr. 2020 à 20:39
5 févr. 2020 à 20:39
mon intention était de chercher, dans la liste, les deux valeurs les plus proches (l'une de l'autre).
sinon, il se serait agit de "la valeur la plus proche" (d'une valeur donnée)
hors, j'ai lu "les 2 entiers les plus proche", et j'ai supposé que je pouvais ajouter un s à proche.
sinon, il se serait agit de "la valeur la plus proche" (d'une valeur donnée)
hors, j'ai lu "les 2 entiers les plus proche", et j'ai supposé que je pouvais ajouter un s à proche.
4 févr. 2020 à 19:39
[9,8,5]
[9,5]
[]
donc, il faut juste que je réinitialise la liste pour que sa donne sa
[9,8,5]
[9,5]
[8,5]
ça la l'air de marcher ,mais maintenant je veux écrire
del list[0] * g
ou g augmente à chaque fois