2024-09-30 01:29:44 发布
网友
我正在用Python编写代码,并使用我正在操作的数组向控制台编写代码,但有一个语法问题
该数组被传入,我创建了另一个数组,用于跟踪位置,并对数组进行排序,但我不明白为什么当我想访问iterable数组时,它会变成2d数组
posarr = [*enumerate(arr)] posarr.sort(key = lambda it:it[1])
然后,要从循环访问,它是:
posarr[i][0] == blah
而不是
posarr[i] == blah
?
注意:函数enumerate()为iterable对象中的每个项分配一个索引
enumerate()
因此,posarr = [*enumerate(arr)]将创建一个新的元组数组,其中元组的第一项是索引,第二项是该索引处的数组元素
posarr = [*enumerate(arr)]
在posarr = posarr.sort(key = lambda it:it[1])之后,posarr将是None,因为list.sort()不返回任何内容。它在适当的位置对数组进行排序。 它应该是这样的:posarr.sort(key = lambda it:it[1])
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[i]
i
posarr[i][1]
posarr[i][0]
所以,posarr不是一个二维数组,它只是一个元组数组
它不是2D数组,而是元组列表。在每个元组中,第一项是索引,第二项是值(正如您从^{}中所期望的)
暂时忘记排序,只需看看posarr包含哪些内容,例如:
>>> posarr = [*enumerate('cab')] >>> posarr [(0, 'c'), (1, 'a'), (2, 'b')]
顺便说一句,这与语法无关
注意:函数
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
包含哪些内容,例如:顺便说一句,这与语法无关
相关问题 更多 >
编程相关推荐