Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [python] problema ciclo for

    guardate qua:

    codice:
    a = ['r','r','r','r','r']
    
    for i in a:
        if i == 'r':
            a.remove(i)
    e cosa ottengo invece di una lista vuota? una lista con ancora 'r' al uso interno. Perchè?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    153
    io di python non so molto ma penso che la variabile i contenga l'indice dell'array e non il contenuto.
    prova a fare cosi
    codice:
    a = ['r','r','r','r','r']
    for i in a:
     if a(i) == 'r':
      a.remove(i)
    cogli l'attimo

  3. #3
    no non contiene l'indice, ma proprio il contenuto è questo il problema.

  4. #4

    Re: [python] problema ciclo for

    Originariamente inviato da newlife05
    guardate qua:

    codice:
    a = ['r','r','r','r','r']
    
    for i in a:
        if i == 'r':
            a.remove(i)
    e cosa ottengo invece di una lista vuota? una lista con ancora 'r' al uso interno. Perchè?
    Perchè il for all'inizio si presuppone che debba ciclare su 5 elementi ma nel frattempo tu ne elimini alcuni (3) dalla lista.

    Se la lista contiene pochi elementi puoi risolvere il problema ciclando su una copia di quella lista, in questo modo:


    codice:
    a = ['r','r','r','r','r']
    
    for i in a[:]:
        if i == 'r':
            a.remove(i)

    ...altrimenti cambiare totalmente approccio, ma dipende da cosa devi effettivamente fare.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  5. #5
    ho risolto proprio con la copia perchè ho scoperto che l'indice non cambia anche se elimino un elemento, quindi alla fine restano elementi. ma per liste grande che faccio?

  6. #6
    Dipende da cosa devi fare. Prova a dare qualche dettaglio in più.
    Ad esempio, potresti eliminare in un colpo solo tutti i doppioni utilizzando un set() è poi decidere cosa eliminare:

    codice:
    >>> a = ['r','r','r','r','r']
    >>> a = set(a)
    >>> a
    set(['r'])
    >>> a.remove('r')
    >>> a
    set([])
    ...ma se vuoi che eventuali altri elementi doppi non vengano eliminati non fa ovviamente al caso tuo.
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  7. #7
    ok grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.