Soustraire 2 éléments d'une même liste?
nathaniel
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
- Deux ecran pc - Guide
- Citizen code python avis - Accueil - Outils
- 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
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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