Arrays 向程序员解释嵌套数组
你是如何向程序员解释嵌套数组的。我想有人对编程有入门级的理解,但正在尝试做更复杂的编码 使用数组的数组可以工作,但是他们不能完全理解这个想法 编辑:嵌套数组示例:Arrays 向程序员解释嵌套数组,arrays,language-agnostic,multidimensional-array,Arrays,Language Agnostic,Multidimensional Array,你是如何向程序员解释嵌套数组的。我想有人对编程有入门级的理解,但正在尝试做更复杂的编码 使用数组的数组可以工作,但是他们不能完全理解这个想法 编辑:嵌套数组示例: array( 'array1' => array( 'key1' => 'val1', 'key2' => 'val2', ), 'array2' => array( 'key1' => 'val1', 'key2'
array(
'array1' => array(
'key1' => 'val1',
'key2' => 'val2',
),
'array2' => array(
'key1' => 'val1',
'key2' => 'val2',
),
);
当然,它们通常比这更复杂,也许这就是问题所在。告诉他们将数组视为一个列表-这有助于给他们一些不那么抽象的东西,比如杂货店列表。然后,嵌套数组就是一个列表列表
也许我在amazon.com上有一份待办事项清单、杂货清单和愿望清单。现在我有了一个所有列表的列表,我可以通过单步查看每个列表中的所有元素。您是如何解释的?对于理解一维数组的人来说,理解每个数组元素包含另一个数组而不是int或字符串的概念似乎并不是一个很大的飞跃
也许比较目录的类比会有所帮助,一维数组类似于包含一堆文件的目录,二维数组类似于包含几个其他目录的目录,每个目录都包含一堆文件,等等,以10为基数的数字可能会有所帮助。这种效果的另一个好来源是时间,因为它有一个不均匀的基准60s=1m,60m=1h,24h=1day,7day=1week以位图为例。在C语言中,您可以制作一个
X
位图,如下所示:
int x[5][5] = {
{ 1,0,0,0,1 },
{ 0,1,0,1,0 },
{ 0,0,1,0,0 },
{ 0,1,0,1,0 },
{ 1,0,0,0,1 }
};
然后向他们演示如何使用嵌套的for
循环来显示位图
示例总是有帮助的,这也让他们将嵌套数组视为多维数组。实际上,在学习Python等语言中的“嵌套”数组之前,最好先了解C等语言中的多维数组,因为在同一数组中可以有不同级别的嵌套。Sports可以提供适当的类比来描述应用嵌套数组。一个团队是一组人,一场比赛是一组相互竞争的团队
然而,这是一个找到与学习者相匹配的类比的例子。找到正确的类比,即使是最慢的学习者也能理解。只要确保你的类比是防水的。与抽象一样,它们也是有漏洞的。嵌套数组是集合中的集合。所以,图书馆有一套书,一本书有一套章节。一章有一组段落,一段有一组句子。一个句子有一组词
For each book in library
For each chapter in book
For each paragraph in chapter
一个具体的例子是书后面的索引。单词列表,每个单词都与页码列表关联 苹果-1,2,3-4
熊-32-35,79,83
猫-14,15,2维很容易解释。想一张桌子。3维——想想立方体或其他3d图像。4维将一系列图像想象成电影,第4维是时间 使用该模型很难将4+个维度可视化。但可以把它想象成一个文件柜,里面有另一个文件柜。你打开抽屉,弹出一个文件柜。你找到你想要的抽屉,打开那个抽屉,又弹出一个文件柜……一遍又一遍,直到最后你拿到你的文件。画出来 变量是一个框
一维数组是一行框。
二维数组是长方体的网格。
三维数组是长方体的立方体
如果他们对一般概念有困难,不要试图直观地解释4维。也许你是从理解数组的人的上下文中解释的。我会试图欺骗他们,让他们意识到他们已经理解了他们,从最小的开始(阅读内部数组)…慢慢扩展,给他们足够的时间提问,直到他们完成 画画是有帮助的,但在这种情况下,你需要给学生一些信息,慢慢来。我认识的大多数程序员都倾向于快,喜欢解释一些事情,即使听者不再跟踪所说的内容 我是一个喜欢隐喻的人,所以我可能会编造一些关于一系列盒子的东西,每个盒子都有编号,然后每个盒子都包含一个同样编号的盒子(但要小得多)。我会把它带到两个层次去理解,然后也许会讨论3个维度来确认。但是我会避免使用四维,因为他们可能会认为没有四维,或者你不能测量时间,或者其他类似的隐喻地雷/干扰…因为这是另一个问题,程序员倾向于添加并喜欢被忽略 还有,你为什么不使用一个更容易引用的散列呢
一句话,小步骤。数组只是一个对象,一种东西。一旦他们明白了这一点,一切都应该简单易懂请(首先向我们解释:)你所说的“嵌套数组”是什么意思!用C或其他语言做一个例子……这个问题似乎离题了,因为它不在帮助中心所描述的讨论范围内。你可以用C来做这件事,你的编译器只会指出,也许在代码的这一部分将你的int转换为int*不是你想到的最好的主意;)什么意思?这是初始化多维数组的正确方法,我一直在使用它,我的编译器没有对它做任何说明。我只是查了一下,可以确认我的代码是完全正确的。我可以理解为什么您可能认为“{1,0,0,0,1}”的计算结果是指向int的指针,但实际上初始化中的内部大括号只是为了可读性。不加大括号的话写出来也会有同样的效果。