IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Supprimer des éléments depuis plusieurs listes [Python 3.X]


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut Supprimer des éléments depuis plusieurs listes
    Bonjour,

    J'ai des listes d'entiers comme celle-là:

    sp_0 = [1, 0, 3, 395, 399]
    sp_1 = [1, 96, 11, 398]
    sp_2 = [1, 0, 3, 10, 397]
    sp_3 = [1, 0, 96, 130, 396]
    sp_4 = [1, 0, 3, 395]

    Je veux que les 1er elements identiques de chaques listes soient supprimés

    voiçi les itérations:

    sp_0 = [1, 0, 3, 395, 399] => [0, 3, 395, 399] => [3, 395, 399]
    sp_1 = [1, 96, 11, 398] => [96, 11, 398]
    sp_2 = [1, 0, 3, 10, 397] => [0, 3, 10, 397] => [3, 10, 397]
    sp_3 = [1, 0, 96, 130, 396] => [0, 96, 130, 396] => [96, 130, 396]
    sp_4 = [1, 0, 3, 395] => [0, 3, 395] => [3, 395]


    Les listes en rouges sont le résulat final.

    Je me demande comment je peux faire ça avec peu d'instructions ?

    Merci

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Bonjour

    Je ne comprends pas comment vous souhaitez construire les listes résultats. Vous dites "supprimer les premiers éléments à même valeurs", mais le 2ième exemple

    [1, 199] => [1, 199]
    [1, 92, 195] => [1, 92, 195]
    [1, 32, 45, 198] => [32, 45, 198]
    [1, 32, 23, 197] => [32, 23, 197]
    [1, 0, 32, 23, 196] => [32, 23, 196]
    pourquoi est ce que le 1 est garder dans la 2ième liste ? Il l'est dans la première car vous spécifier de garder au moins 2 éléments je suppose. Par contre pourquoi [1, 92, 195] ne devient pas [92, 195] ? ...

    Et pareil, pourquoi
    [1, 32, 45, 198] => [32, 45, 198]
    [1, 32, 23, 197] => [32, 23, 197]
    et pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [1, 32, 45, 198] => [45, 198]
    [1, 32, 23, 197] => [23, 197]
    ?

    Il faudrait détailler pas à pas, la procédure que vous souhaitez appliquée, au moins sur les exemples, pour qu'on comprenne.

  3. #3
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut
    Merci lg_53

    j'ai reformuler l'exemple

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par lee.mao Voir le message
    Je veux que la totalité des listes avoir un élément en commun au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [1, 199] => [1, 199]
    [1, 92, 195] => [1, 92, 195]
    [1, 32, 45, 198] => [32, 45, 198]
    [1, 32, 23, 197] => [32, 23, 197]
    [1, 0, 32, 23, 196] => [32, 23, 196]
    Si on enlève le 1er element de la 2eme liste [1, 92, 195], le 1er element sera 92, et c'est la seule liste qui commence par ce nombre.
    Le souci, c'est que la liste [1, 32, 45, 198] ne peut devenir [32, 45, 198] que parce que les deux listes suivantes, à l'état final, commenceront par 32. Autrement dit, tu ne compares pas les listes dans leur état actuel mais les listes à l'état terminé. Or cet état terminé ne peut se connaitre que si on a déjà connaissance de l'état terminé. Bref on se mord la ... enfin ce qu'on pourrait se mordre si on était un chien...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Citation Envoyé par lee.mao Voir le message
    Merci lg_53

    Je veux que la totalité des listes avoir un élément en commun au début



    Si on enlève le 1er element de la 2eme liste [1, 92, 195], le 1er element sera 92, et c'est la seule liste qui commence par ce nombre.

    En gros, je veux que au moins 2 listes réduites se commence par le même nombre, et que la longueur de toutes les listes ne soit pas inférieure à 2


    Merci !
    Soit j'ai perdu des neurones en quantité plus grande que d'habitude (il paraît que l'on en perd tous les jours), soit cette explication est parfaitement limpide, mais dissimulée par un épais brouillard.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par lee.mao Voir le message
    En gros, je veux que au moins 2 listes réduites se commence par le même nombre, et que la longueur de toutes les listes ne soit pas inférieure à 2
    Si vous n'arrivez pas à décrire les étapes à réaliser pour obtenir le résultat avec un crayon sur une feuille de papier, vous avez d'abord un problème d'algorithme.
    Et il faut commencer par poser la question dans la bonne rubrique.
    Dans le cas contraire, vous avez un code à montrer et s'il s'agit de l'optimiser pourquoi pas...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Si je comprends bien, il faut comparer la liste L à la L+1 avec comme condition si L[0] = L+1[0] alors on supprime l'élément [0] des deux listes, puis on reprend depuis le début on compare L avec L+1 L+2......

    Mais on ne supprime plus rien si une des listes n'a que deux éléments, et on retourne le tout par liste seul.

    Bon c'est dans mon charabia à moi ^^.

  8. #8
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut
    Excusez moi, j'ai mal choisi l'exemple. Il a été modifié

    Le principe est que les 1er éléments identiques dans chaque liste doivent être supprimés tout simplement comme suit:

    sp_0 = [1, 0, 3, 395, 399] => [0, 3, 395, 399] => [3, 395, 399]
    sp_1 = [1, 96, 11, 398] => [96, 11, 398]
    sp_2 = [1, 0, 3, 10, 397] => [0, 3, 10, 397] => [3, 10, 397]
    sp_3 = [1, 0, 96, 130, 396] => [0, 96, 130, 396] => [96, 130, 396]
    sp_4 = [1, 0, 3, 395] => [0, 3, 395] => [3, 395]


    Excusez moi encore une fois

    Merci

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lee.mao Voir le message
    Excusez moi, j'ai mal choisi l'exemple. Il a été modifié

    Le principe est que les 1er éléments identiques dans chaque liste doivent être supprimés tout simplement comme suit:

    sp_0 = [1, 0, 3, 395, 399] => [0, 3, 395, 399] => [3, 395, 399]
    sp_1 = [1, 96, 11, 398] => [96, 11, 398]
    sp_2 = [1, 0, 3, 10, 397] => [0, 3, 10, 397] => [3, 10, 397]
    sp_3 = [1, 0, 96, 130, 396] => [0, 96, 130, 396] => [96, 130, 396]
    sp_4 = [1, 0, 3, 395] => [0, 3, 395] => [3, 395]
    Pourquoi les listes [3, 395, 399] et [3, 10, 397] ne perdent pas leur premier élément "3" ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  10. #10
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Pourquoi les listes [3, 395, 399] et [3, 10, 397] ne perdent pas leur premier élément "3" ???
    Parce que le dernier élément (le numéro 3) doit être retenu, c'est une condition. Il faut qu'il y aura un nombre en commun avec les listes comme il est montré en exemple

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lee.mao Voir le message
    Il faut qu'il y aura un nombre en commun avec les listes comme il est montré en exemple
    Dans ce cas, la liste [3, 395, 399] ayant son premier élément identique avec la liste [3, 395], et ayant un second élément en commun (395) ; elle doit perdre son premier "3" et devenir [395, 399].
    De plus, la liste [0, 96, 130, 396] n'ayant aucun autre élément en commun avec les autres listes commençant par 0, ne peut pas devenir [96, 130, 396].
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  12. #12
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Dans ce cas, la liste [3, 395, 399] ayant son premier élément identique avec la liste [3, 395], et ayant un second élément en commun (395) ; elle doit perdre son premier "3" et devenir [395, 399].
    De plus, la liste [96, 130, 396] n'ayant, en dehors de 96, aucun autre élément en commun avec la liste [96, 11, 398] ne peut pas devenir [96, 130, 396].
    Oui, de plus c'est la 2eme condition: les dernières listes doivent avoir au minimum 2 nombres

    La suppression des nombres se fait en même temps selon les couleurs:
    sp_0 = [1, 0, 3, 395, 399]
    sp_1 = [1, 96, 11, 398]
    sp_2 = [1, 0, 3, 10, 397]
    sp_3 = [1, 0, 96, 130, 396]
    sp_4 = [1, 0, 3, 395]

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par lee.mao Voir le message
    Oui
    Tu dis "oui" alors que je relève une incohérence entre tes conditions et ton exemple. Ce n'est pas la réponse attendue. La réponse que j'attendais est soit "oui tu as raison je me suis trompé dans l'exemple" ou "non parce qu'il y a une condtion à la con en plus qui fait que..."

    Donc ce code produit le résultat de ton exemple corrigé selon mes propres remarques que tu n'as pas contredites.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/usr/bin/env python3
    # coding: utf-8
     
    sp=[
    	[1, 0, 3, 395, 399],
    	[1, 96, 11, 398],
    	[1, 0, 3, 10, 397],
    	[1, 0, 96, 130, 396],
    	[1, 0, 3, 395],
    ]
     
    modif=True
    while modif:
    	#print(sp)
    	modif=set()
    	for i in range(len(sp)):
    		if len(sp[i]) <= 2: continue
    		for j in range(len(sp)):
    			if i == j: continue
    			if sp[j][0] == sp[i][0] and set(sp[j][1:]) & set(sp[i][1:]):
    				modif.add(i)
    				break
    			# if
    		# for
    	# for
    	for m in modif: sp[m]=sp[m][1:]
    # while
     
    print(sp)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre averti
    Homme Profil pro
    Collégien
    Inscrit en
    Décembre 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Décembre 2019
    Messages : 28
    Par défaut
    Merci Sve@r !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Prototype] Supprimer des éléments d'une liste
    Par baggie dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 05/06/2012, 12h22
  2. Supprimer des éléments de la liste courante
    Par meyxiam dans le forum C#
    Réponses: 1
    Dernier message: 09/09/2009, 18h12
  3. Réponses: 7
    Dernier message: 23/04/2008, 10h21
  4. Supprimer des fichiers depuis une liste déroulante
    Par Flo88 dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/03/2008, 09h14
  5. Supprimer des éléments d'une liste
    Par espadon1 dans le forum Langage
    Réponses: 2
    Dernier message: 31/05/2006, 15h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo