繁体   English   中英

如何找到列表元素的-index?

[英]How to find the -index of an element of a list?

有一个像my_list这样的列表,我想找到一个元素的 -index,意思是从列表末尾开始计数的元素的位置。

my_list = ['a', 'b', 'c']

例如,我想结果发现 'b' 的 -index 是-2

只是另一种方式...

>>> ~my_list[::-1].index('b')
-2

如果有多个,这也支持查找最后一次出现。

如果列表很长并且元素接近末尾,例如['z'] * 1000 + ['a', 'b', 'c'] ,那么它可能会更快(18 μs vs 57 μs的index - len解决方案)。 甚至更快(3.1 μs):

>>> (my_list.reverse(), ~my_list.index('b'), my_list.reverse())[1]
-2

这是代数,甚至不是 Python。

写一个对应索引的短表,比如长度为 10 的表:

+   -
0   -10
1   -9
2   -8
...
8   -2
9   -1

这是一个简单的线性关系。 导出方程。 最后,将常量10替换为len(my_list)

你能从那里拿走吗?

OP 的一个示例定义不明确,因为-index可以具有以下任何含义:

  • 如果向后步进,则到达数组的第一个(最左侧)项所需的步骤数。
  • 在满足数组的第一个(最右边的)项之前需要许多步骤。

可以从len(my_list)减去my_list.index('b')然后在第一种情况下反转结果的符号。

在第二种情况下,我们正在翻转列表并对其应用index方法,因此-(list(reversed(my_list)).index('b) + 1)-(my_list[::-1].index('b') + 1)做到了。 第二种方式使用较多。

my_list = ['a', 'b', 'c', 'd'] # len(my_list) = 4
negative_index = my_list.index('b') - len(my_list) # 1 - 4 = -3 

print(my_list[negative_index])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM