Python枚举数组语法



我正在用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数组,它只是元组的数组。

最新更新