如何取二维数组的一列数值

如何取二维数组的一列数值

@AOA=([1,2,3],[4,5,6],[7,8,9]);
@tmp=@{$AOA[0]};      # 取 第 0行的值

我想取整个第一列的值 ,有什么像取行这样简单的方法马?

@tmp=@{$AOA[][1]};
这样是不可以的
你有先试试看吗..不要这麽懒......
@AOA=([1,2,3],[4,5,6],[7,8,9]);
@tmp=map{$AOA[$_][0]} (0..$#AOA);

print join("\n",@tmp),"\n";
royalzhang 的那个Perl学者是咋来的?


QUOTE:
原帖由 perljoker 于 2007-9-20 12:14 发表
royalzhang 的那个Perl学者是咋来的?

自封的,学者是“初学者”的意思。


QUOTE:
原帖由 royalzhang 于 2007-9-20 11:57 发表
@AOA=([1,2,3],[4,5,6],[7,8,9]);
@tmp=map{$AOA[$_][0]} (0..$#AOA);

print join("\n",@tmp),"\n";  

嘿嘿,偶也学习者了
royalzhang兄的写法,发散思维啊,偶没想到map的后者其实可以不是AOA的
学习了哈,自己弄了半天,发现还有简单的写法

[Copy to clipboard] [ - ]
CODE:
print join("\n",map($_->[0],@AOA)),"\n";



QUOTE:
原帖由 choose2005 于 2007-9-20 11:40 发表
@AOA=([1,2,3],[4,5,6],[7,8,9]);
@tmp=@{$AOA[0]};      # 取 第 0行的值

我想取整个第一列的值 ,有什么像取行这样简单的方法马?

@tmp=@{$AOA[][1]};
这样是不可以的

Hi,
first elemet from @AOA is $AOA[0], which is ref. to array, you should dereference it like:
@{ $AOA[0] }, than you can get the elements very easyly like:
@{ $AOA[0] } [0] (say 1st. element)

perl -le '@AOA=([1,2,3],[4,5,6],[7,8,9]); print "@{ $AOA[0] }[0]"'

-- ulmer
$#AOA为有多少行,但是计算共有多少列应该怎么办呢


QUOTE:
原帖由 choose2005 于 2007-9-20 20:03 发表
$#AOA为有多少行,但是计算共有多少列应该怎么办呢

据我的了解,你这个貌似没有很特定的说法
在perl里面,hash和array包含的数据类型可能很复杂,可以不是齐整的列
二维数组也是用的数组的匿名引用

你这里,可以这么写$#{$AOA[0]}表示第一行的最大index,其他类推
循环时$#{$AOA[$i]}就行,#  $i表示行数
我觉得foreach的使用就是配合perl的一些特殊结构使用的吧
比如未事先定义大小的数据结构



QUOTE:
原帖由 choose2005 于 2007-9-20 20:03 发表
$#AOA为有多少行,但是计算共有多少列应该怎么办呢

列只是你的人为加给Perl的,Perl并没有列的概念,也不是所谓的二维数组,因为只是一个扁平的数组罢了,只不过元素是数组的引用。比如,
你说说这个“二维数组”有几列?

QUOTE:
@AOA=([1,2],[4,5,6],[7,8,9]); #这个二维数组有几列?

如果你对矩阵之类的东西操作,也就是你知道它的数据是整齐的(每行一样长),那么你只取一行的长度,不就是你的“列数”了吗?