[Roma.pm] domanda
kanak at perl.it
kanak at perl.it
Fri Sep 11 07:30:18 PDT 2009
grazie mille cerco di tradurmelo un attimo
vorrei cercare di farlo col map piuttosto che usare un modulo
senno' mi faccio la sub (ma e' antiestetico)
> In generale la mappatura indice -> valore non è invertibile, ad esempio con
> array così:
> @array = (1, 1, 1, 1, 1);
> dove si trova "1"?
> Se vuoi l'indice del primo elemento uguale a quello che cerchi, puoi usare
> first_index (alias firstids) da
> List::MoreUtils<http://search.cpan.org/perldoc?List::MoreUtils>
> :
> $indice = first_idx { $_ == $elemento } LISTA;
> Al posto di "==" puoi ovviamente mettere "eq" ed in generale puoi mettere un
> qualsiasi blocco di test (ad esempio per cercare il primo elemento pari,
> positivo, ecc.)
> Se sei sicuro che la mappatura sia invertibile - ossia la lista/array
> contiene solamente valori unici - e devi trovare parecchie inversioni
> potresti utilizzare una hash, ad esempio:
> my @array = (...);
> my %indice_di;
> @indice_di{@array} = 0 .. $#array;
> # oppure, più concisamente
> my %indice_di = map { $array[$_] => $_ } 0 .. $#array;
> $indice = $indice_di{$elemento};
> Da notare che se hai elementi ripetuti questa tecnica ti darà l'ultimo
> indice disponibile, non il primo come first_index().
> Ciao,
> Flavio.
> 2009/9/11 <kanak at perl.it>
>> qual'e' la variabile che indica la posizione di un elemento dentro un
>> array?
>>
>> in pratica l'opposto di:
>> " $lista[x] " che corrisponde ad " elemento "
>>
>> io vorrei una funzione tipo:
>> "posizione(elemento, @lista) che corrisponde ad " x "
>>
>> grazie
>>
>> _______________________________________________
>> Roma mailing list
>> Roma at pm.org
>> http://mail.pm.org/mailman/listinfo/roma
>>
--
Best regards,
kanak mailto:kanak at perl.it
More information about the Roma
mailing list