Soustraire 2 éléments d'une même liste?

Signaler
-
yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020
-
Bonjour,

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.

2 réponses

Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020
526
bonjour, si tu veux comprendre ce que fait ton programme, ajoute
print(liste)
juste avant la ligne qui te donne une erreur.
Sa imprime
[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
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 ?
yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020
526 > trifou
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)
> yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020

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.
yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020
526 > trifou
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.
> yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020

Ah oui en effet, je n'avais sans doute pas compris ce que nathaniel voulait faire.
yg_be
Messages postés
9618
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 février 2020
526 > trifou
il ne l'a pas expliqué, je ne sais pas si il l'a compris, il a juste montré un programme qui ne faisait rien d'utile.