我正在用Python编写,并使用正在操作的数组向控制台编写,但有语法问题。
数组被传入,我创建了另一个数组来跟踪位置,同时使用排序数组,但我不明白为什么当我想访问可迭代数组时,它会变成一个2d数组
posarr = [*enumerate(arr)]
posarr.sort(key = lambda it:it[1])
然后从循环访问它是:
posarr[i][0] == blah
而不是
posarr[i] == blah
它不是一个2D数组,而是一个元组列表。在每个元组中,第一项是索引,第二项是值(正如您从enumerate
中所期望的那样(。
暂时忘记排序,只需看看posarr
包含什么,例如:
>>> posarr = [*enumerate('cab')]
>>> posarr
[(0, 'c'), (1, 'a'), (2, 'b')]
顺便说一句,这与语法无关。
注意:enumerate()
函数为可迭代对象中的每个项分配一个索引
因此,posarr = [*enumerate(arr)]
将创建一个新的元组数组,其中元组的第一项将是索引而第二项是该索引处的数组元素。
在posarr = posarr.sort(key = lambda it:it[1])
之后,posarr
将是None
,因为list.sort()
不返回任何内容。它在适当的位置对数组进行排序。它应该是这样的:posarr.sort(key = lambda it:it[1])
。
posarr[i]
将返回索引i
处的元组,因此要访问该索引处的元素,必须执行类似于posarr[i][1]
的操作。CCD_ 13是元素CCD_。
因此,posarr
不是2-D数组,它只是元组的数组。