Soustraire 2 éléments d'une même liste?
nathaniel
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voici ce que je veux faire.
... pour trouver les deux entiers les plus proches.
Voici ce que je veux faire.
n = int(input()) p = 10000000 c = n list = [] for i in range(n): list.append(i) list.sort(reverse=True) while c > 1: for i in range(n): l = list[0] - list[1]#je ne peux soustraire ces éléments et je ne trouve pas la syntaxe approprié if l < p: p = list[0] - list[1] # pareil del list[1] #il fonctionne là else: del list[1] #,mais il fonctionne pas là(le delete) list.remove(max(list)) c = c-1 print(l)
... pour trouver les deux entiers les plus proches.
A voir également:
- Soustraire deux listes python
- Citizen code python avis - Accueil - Outils
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux whatsapp sur un téléphone - Guide
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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.
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)
[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