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 :

Dupliquer liste dans liste


Sujet :

Python

  1. #1
    Invité
    Invité(e)
    Par défaut Dupliquer liste dans liste
    Bonjour !

    J'ai une question simple : Comment créer facilement plusieurs fois une liste de listes "indépendantes" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> a = [[0,0]]*3
    >>> a
    [[0, 0], [0, 0], [0, 0]]
    >>> a[1][0] = "toto"
    >>> a
    [['toto', 0], ['toto', 0], ['toto', 0]]
    Il y a bien numpy qui devrait m'aider (Merci Google) mais y a t-il une autre solution relativement élégante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> x = np.array([[0,0]])
    >>> y = np.repeat(x, 3, axis=0)
    >>> y
    array([[0, 0],
           [0, 0],
           [0, 0]])
    >>> y[1][0]=5
    >>> y
    array([[0, 0],
           [5, 0],
           [0, 0]])
    Merci d'avance !
    PS : J'ai essayé vite faite et sans trop savoir comment ça fonctionne le module deepcopy de copy sans succès...

    Question subsidiaire :
    Comment dupliquer ce tableau n fois de façon "indépendante" ?
    Mauvais résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> np.repeat(np.repeat(np.array([[0,0]]), 2, axis=0), 2, axis=0)
    array([[0, 0],
           [0, 0],
           [0, 0],
           [0, 0]])
    Résultat escompté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> x
    [array([[0, 0],[0, 0]]), 
    array([[0, 0],[0, 0]]),
    array([[0, 0],[0, 0]])]
    Dernière modification par Invité ; 23/04/2021 à 22h46.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par LeNarvalo Voir le message
    J'ai une question simple : Comment créer facilement plusieurs fois une liste de listes "indépendantes" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >>> a = [ [0,0] for _ in range(3) ]
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci Wiz !
    Et du coup pour ma question secondaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b = [[ [0,0] for _ in range(3) ] for _ in range(3)]
    Ca va être beaucoup plus mieux que :
    Code : 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
    A = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    B = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    C = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    D = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    E = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    F = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    G = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    H = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    I = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    J = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    K = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    L = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    M = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    N = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    O = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    P = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    Q = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    R = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    S = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    T = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    U = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    V = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    W = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    X = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    Y = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    Z = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    APOS = np.repeat(np.array([[0,0]], dtype=float), nb, axis=0)
    LISTE = [A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,APOS]

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Bah, sur qu'on ne travaille pas pareil avec des listes de listes et tableaux numpy.

    Si le but est de créer un tableau de dimensions (3,3,2) pleins de zéros, numpy.zeros((3,3,2)) sera bien plus efficace.

    Après c'est vous qui voyez quand utiliser listes de listes ou tableaux numpy et pour cela savoir ce qu'on peut faire avec est un pré-requis.

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

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Après c'est vous qui voyez quand utiliser listes de listes ou tableaux numpy et pour cela savoir ce qu'on peut faire avec est un pré-requis.



    Code : 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
    import unidecode, string
     
    characters = string.ascii_lowercase+"'"+" "
    nb = len(characters)
    LISTE = [[ [0,0] for _ in range(nb) ] for _ in range(nb-1)]
     
    livre = "alcyande.txt"
    text = open(livre,'r')
    texte = unidecode.unidecode(text.read().encode("cp1252").decode("utf8")).replace("\n"," ").lower()
    for d in string.digits + string.punctuation.replace("'",""):
        texte = texte.replace(d,"")
    text.close()
     
    def stat(t):
        for i, l in enumerate(t):
            if l != " ":
                id = characters.index(l)
                LISTE[id][characters.index(t[i+1])][0]+=1
        for L in LISTE:
            for l in L:
                l[1]=(l[0]/sum([x[0] for x in L]))*100
    La suite plus tard !

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

Discussions similaires

  1. [OL-2007] Dupliquer liste de diffusion
    Par malbousquet dans le forum Outlook
    Réponses: 0
    Dernier message: 16/11/2020, 11h21
  2. [AC-2007] dupliquer champs dans nouvel enregistrement
    Par jchuillier2 dans le forum IHM
    Réponses: 5
    Dernier message: 25/06/2015, 22h14
  3. Dupliquer données dans la même table
    Par czar1983 dans le forum SQL
    Réponses: 8
    Dernier message: 06/11/2013, 23h09
  4. Dupliquer données dans une table
    Par LegendPC dans le forum Access
    Réponses: 6
    Dernier message: 24/05/2011, 15h18

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