亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 求助,對(duì)一個(gè)數(shù)組讓小于的10的元素放到一個(gè)數(shù)組中,小于20的元素放到另一個(gè)數(shù)組中, [打印本頁(yè)]

作者: 賽萌    時(shí)間: 2015-09-01 10:04
標(biāo)題: 求助,對(duì)一個(gè)數(shù)組讓小于的10的元素放到一個(gè)數(shù)組中,小于20的元素放到另一個(gè)數(shù)組中,
本帖最后由 賽萌 于 2015-09-01 10:57 編輯

一個(gè)很大的數(shù)組,從0開始的,我排過序之后,需要以10個(gè)為間隔,小于10的放到一個(gè)數(shù)組中,小于20的放到一個(gè)數(shù)組中,小于30的放到一個(gè)數(shù)組中,40,50....直到200;
因?yàn)橐y(tǒng)計(jì)每個(gè)小數(shù)組的個(gè)數(shù),這個(gè)變量該怎么設(shè)呢,想寫成數(shù)組的數(shù)組的形式,如果寫if($_<10){}elsif($_<20){}這樣太麻煩
下面是我寫的,后面還得命名很多數(shù)組,能不能找個(gè)簡(jiǎn)便的方法啊,
my (@arr1,@arr2,@arr3,@arr4,@arr5,@arr6,@arr7,@arr8);
for (@arr){
        if($_<10){
                push @arr1,$_;
        }elsif($_<20){
                push @arr2,$_;
        }elsif($_<30){
                push @arr3,$_;
        }elsif($_<40){
                push @arr4,$_;
        }elsif($_<50){
                push @arr5,$_;
        }elsif($_<60){
                push @arr6,$_;
        }elsif($_<70){
                push @arr7,$_;
        }
}
my ($i1,$i2,$i3,$i4,$i5,$i6,$i7,$i8);
$i1=@arr1;
$i2=@arr2;
$i3=@arr3;
$i4=@arr4;
$i5=@arr5;
$i6=@arr6;
$i7=@arr7;
$i8=@arr8;
作者: wexinperl    時(shí)間: 2015-09-01 10:12
本帖最后由 wexinperl 于 2015-09-01 10:12 編輯

something like this :
  1. my $h = [];
  2. for my $i ( 0 .. 19 ) {
  3.     $h->[$i] = [ grep {   $i * 10  < $_ <= ( $i + 1 ) * 10 } @total ];
  4. }
復(fù)制代碼

作者: jason680    時(shí)間: 2015-09-01 10:18
回復(fù) 1# 賽萌

提示: int($val/10)
    $val= 0~9: 0
    $val= 10~19: 1
    $val= 20~29: 2
    ...
    $val= 190~199: 19


作者: 104359176    時(shí)間: 2015-09-01 10:25
可以從大到小遍歷:
  1. if ($a > 100) { ... }
  2. if ($a > 90) { .. }
  3. ..
復(fù)制代碼
也可以將區(qū)間當(dāng)成一個(gè)鍵:
  1. $key = int( $a / 10)
  2. $hash->{$key} = []
  3. push $hash->{$key}, $a
復(fù)制代碼

作者: 賽萌    時(shí)間: 2015-09-01 10:32
回復(fù) 4# 104359176


    不是特別明白,是讓10為區(qū)間分割這些數(shù)組,那$key變成了元素/10,有什么區(qū)別嗎
作者: MMMIX    時(shí)間: 2015-09-01 10:48
回復(fù) 1# 賽萌


    編輯帖子, 把表情禁用掉. 另外, 帖子的標(biāo)題也順便修改下, 把你的問題在其中體現(xiàn)下.
作者: 賽萌    時(shí)間: 2015-09-01 11:01
回復(fù) 6# MMMIX


    用取余數(shù)就行了是吧
作者: MMMIX    時(shí)間: 2015-09-01 11:04
回復(fù) 1# 賽萌


    使用數(shù)組的數(shù)組. 對(duì)于原始數(shù)組的每個(gè)成員, 根據(jù)其值找到其所應(yīng)在的子數(shù)組, 然后 push 即可:

my @arr = (1 .. 200);

my @subarrs;
for (@arr) {
    my $idx = int ($_ / 10);
    push @{$subarrs[$idx]}, $_;
}

作者: MMMIX    時(shí)間: 2015-09-01 11:05
回復(fù) 7# 賽萌


    取余數(shù)? 你是說取模? 11, 21, 31 (mod 10) 都是 1 啊.
作者: 賽萌    時(shí)間: 2015-09-01 11:37
回復(fù) 9# MMMIX


    恩,好像是不對(duì),但是還得問你一下,求這里面的每個(gè)小數(shù)組的個(gè)數(shù),好像用$i=@i這樣的方式不行啊
作者: 賽萌    時(shí)間: 2015-09-01 11:47
回復(fù) 6# MMMIX


    求出來了,求出來了,謝謝
作者: 104359176    時(shí)間: 2015-09-01 15:27
獲取數(shù)組的個(gè)數(shù),在 Perl 中是這樣的:
  1. $length = scalar @array;
復(fù)制代碼
而 length 是獲取字符串的長(zhǎng)度:
  1. length 'abc' == 3
復(fù)制代碼





歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2