Python枚举数组语法

2024-09-30 01:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写代码,并使用我正在操作的数组向控制台编写代码,但有一个语法问题

该数组被传入,我创建了另一个数组,用于跟踪位置,并对数组进行排序,但我不明白为什么当我想访问iterable数组时,它会变成2d数组

posarr = [*enumerate(arr)]
posarr.sort(key = lambda it:it[1])

然后,要从循环访问,它是:

posarr[i][0] == blah

而不是

posarr[i] == blah

?


Tags: lambdakey代码排序语法it数组iterable
2条回答

注意:函数enumerate()为iterable对象中的每个项分配一个索引

因此,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]posarr[i][0]是元素posarr[i][1]的索引

所以,posarr不是一个二维数组,它只是一个元组数组

它不是2D数组,而是元组列表。在每个元组中,第一项是索引,第二项是值(正如您从^{}中所期望的)

暂时忘记排序,只需看看posarr包含哪些内容,例如:

>>> posarr = [*enumerate('cab')]
>>> posarr
[(0, 'c'), (1, 'a'), (2, 'b')]

顺便说一句,这与语法无关

相关问题 更多 >

    热门问题