|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Michael Samanov 2:550/5068.1515 18 Jan 2001 12:13:48 To : Alexey Sedykh Subject : Re: ? -------------------------------------------------------------------------------- Hello, Alexey! At Wed, 17 Jan 01 19:27:24 +0300 Alexey Sedykh wrote: AS> Можно ли вычислить номеp элемента списка, зная сам элемент? нy напpимеp AS> $images[3]="test"; я пишy что-то типа $num=$images[test]; и в $num она AS> возвpащает мне его поpядковый номеp в списке, т.е. 3... Только если ты заведешь параллельный хэш с индексами элементов. Примерно так: my(@images, %images); while(...) { ... push @images, $image; $images{$image} = $#images; } Или сканировалку массива (тормознее, но не требует дополнительной памяти): sub arr_index { my($arr, $item) = @_; for my $i (0..$#$arr) { return $i if $item eq $arr->[$i]; } } print arr_index(\@images, "test"); Причем, как ты понимаешь, соответствие не будет взаимно однозначным из-за, возможно, повторяющихся элементов списка. А, может, тебе и не нужен список-то? Могобыть, хэшем обойтись можно? Sincerely yours, Michael (mailto:mike@vlink.ru). --- ifmail v.2.14 * Origin: Mike's home (2:550/5068.1515@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/7949b0487819.html, оценка из 5, голосов 10
|