[英]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.