Scansione a doppio indice di un array

di il
3 risposte

Scansione a doppio indice di un array

Salve, mi sto approcciando da poco a Python da autodidatta per scrivere un progetto. Finora mi è sembrato più semplice di Java che è stato il primo linguaggio di programmazione che ho studiato a partire dal 2019. E' da qualche giorno, però, che mi sono bloccato per via di una funzione che in Java avevo imparato facilmente ma qua non so come scriverla. La funzione è semplice: dato un array, voglio che il programma mi segnali se all'interno vi sono degli elementi consecutivi identici, e quindi si procederebbe così:

valori = [1,2,3,3,4,5,6,6,7]

boolean trovato = false ;

for (int i =0; i <9; i ++) {

for (int j=i +1; j <10; j ++) {

if ( valori [i ]== valori [j ]) trovato = true ;
}
}

Perchè in Java l'indice è una variabile esplicita a cui posso assegnare il valore che voglio, ma in Python come si fa? Ho cercato in giro, ma mi appaiono solo video e spiegazioni che trattano l'iterazione di array a più dimensioni, qui, invece, si tratta di un'unica dimensione. Grazie a chi vorrà darmi una mano.

3 Risposte

  • Re: Scansione a doppio indice di un array

    for i in range(len(array)) :
       blablabla

    Devi studiare la sintassi del linguaggio! 

    I cicli sono spiegati nei primi capitoli

  • Re: Scansione a doppio indice di un array

    Magari puoi anche migliorare l'algoritmo che utilizzi: il problema ti chiede di ricercare due elementi consecutivi, di conseguenza ti basta sapere l'ultimo elemento che hai controllato

    if len(array) == 0:
    	return false
    curr_elem = array[0] 
    for i in range(1, len(array):
    	if curr_elem == array[i]:
    		return true
    	curr_elem = array[i]
    return false
  • Re: Scansione a doppio indice di un array

    Una funzione comodissima in Python è enumerate(), che restituisce ciascun elemento di una sequenza preceduto da un indice progressivo.

    Qui ho usato anche il concetto di slice, per enumerare solo gli elementi dal secondo in avanti.

    def trova_coppia(seq):
        if len(seq) < 2:
            return False
        for i, elem in enumerate(seq[1:], start=1):
            if elem == seq[i-1]:
                return True
    
    def conta_coppie(seq, stampa=True):
        num_doppioni = 0
        if len(seq) < 2:
            if stampa: print("Meno di due elementi nella sequenza")
        else:
            for i, elem in enumerate(seq[1:], start=1):
                if elem == seq[i-1]:
                    if stampa: print(f"L'elemento alla posizione {i} è uguale a quello che lo precede!")
                    num_doppioni += 1
            if num_doppioni == 0:
                if stampa: print("Nessuna coppia rilevata")
        return num_doppioni
                
    
Devi accedere o registrarti per scrivere nel forum
3 risposte