question python : supprimer 0 d'une liste

question python : supprimer 0 d'une liste

Messagede fracko69 » 12 Sep 2020, 10:50

Bonjour à tous,
j'ai cru voir qu'il y avait 2, 3 pros par ici à qui je soumets ce problème.
Je crée ma variable x avec linspace et je veux supprimer 0 des valeurs, par exemple pour tracer une hyperbole.
Après quelques recherches sur le net, j'ai testé discard ou remove mais je n'ai rien trouvé qui fonctionne (Message : AttributeError: 'numpy.ndarray' object has no attribute 'remove').
Je bosse avec edupython 2.7.
Merci d'avance!
F
fracko69
 
Messages: 15
Inscription: 11 Sep 2019, 14:52
Académie: Lyon
Poste: Enseignant en Lycée

Re: question python : supprimer 0 d'une liste

Messagede gts2 » 12 Sep 2020, 12:13

remove s'applique à une liste.
discard s'applique à un ensemble.

Et vous utilisez un tableau

Le plus simple est de "tricher" avec linspace

a=np.linspace(-1, 1.0, num=3)
b=np.linspace(-1, 1.0, num=4)
a contient 0, b ne contient pas 0
gts2
 
Messages: 348
Inscription: 19 Fév 2019, 10:49
Académie: Orléans-Tours
Poste: Enseignant en Classes préparatoires

Re: question python : supprimer 0 d'une liste

Messagede fracko69 » 12 Sep 2020, 15:29

Ok, merci bcp ! C'est pas comme si je les faisais bosser sur les types de variable! :? :?
fracko69
 
Messages: 15
Inscription: 11 Sep 2019, 14:52
Académie: Lyon
Poste: Enseignant en Lycée

Re: question python : supprimer 0 d'une liste

Messagede pbouchet86 » 12 Sep 2020, 16:13

Sans tricher sous numpy, tu as la méthode "delete" que tu peux croiser avec la méthode "where"

import numpy as np

x = np.array([3,0,2,0,5,6,9,5,4,0,1])

print (x)

x = np.delete(x,np.where(x == 0))

print (x)

Sortie :
[3 0 2 0 5 6 9 5 4 0 1]
[3 2 5 6 9 5 4 1]
pbouchet86
 
Messages: 358
Inscription: 05 Juil 2019, 20:22
Académie: Poitiers
Poste: Enseignant en Lycée

Re: question python : supprimer 0 d'une liste

Messagede Wissam » 13 Sep 2020, 06:41

Les tableaux que tu manipules avec numpy sont pratiques mais je suis d’avis de ne pas utiliser ce module au lycée: Le code sera un poil plus long mais finalement plus simple pour un débutant.
Je préfère que les élèves utilisent les bases, c’est à dire la manipulation de listes qu’ils voient maintenant en SNT et maths, plutôt qu’un concept légèrement différent qui risque de les embrouiller.
Wissam
 
Messages: 244
Inscription: 19 Avr 2016, 09:59
Académie: Versailles
Poste: Enseignant en Lycée

Re: question python : supprimer 0 d'une liste

Messagede pbouchet86 » 13 Sep 2020, 07:19

Tu peux toujours faire ceci en boucle ou fonction :

x = [3,0,2,0,5,6,9,5,4,0,1]

def remove_element(list_,valeur):
list_bis = []
for i in range(len(list_)):
if x[i] != valeur:
list_bis.append(list_[i])
return list_bis

x_bis= remove_element(x,0)

print (x)
print (x_bis)

Pas sur que ce soit plus simple pour les élèves !
Rien de dérangeant à utiliser les tableaux en physiques,c'est un outil courant.
pbouchet86
 
Messages: 358
Inscription: 05 Juil 2019, 20:22
Académie: Poitiers
Poste: Enseignant en Lycée


Retourner vers Informatique et Numérique

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités