Python 如何找到列表元素的-索引?

Python 如何找到列表元素的-索引?,python,list,indexing,Python,List,Indexing,有一个类似于my_list的列表,我想找到元素的-索引,这意味着元素从列表末尾开始计数的位置 my_list = ['a', 'b', 'c'] 例如,我想找到一个结果,“b”的-索引是-2这是代数,甚至不是Python 写一个对应索引的简短表格,例如长度为10的表格: + - 0 -10 1 -9 2 -8 ... 8 -2 9 -1 这是一个简单的线性关系。推导方程。最后,将常量10替换为len(我的列表) 你能从那里拿走吗 my_list = ['a', 'b'

有一个类似于
my_list
的列表,我想找到元素的-索引,这意味着元素从列表末尾开始计数的位置

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

例如,我想找到一个结果,“b”的-索引是
-2

这是代数,甚至不是Python

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

+   -
0   -10
1   -9
2   -8
...
8   -2
9   -1
这是一个简单的线性关系。推导方程。最后,将常量
10
替换为
len(我的列表)

你能从那里拿走吗

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])
b

另一种方式

>>> ~my_list[::-1].index('b')
-2
如果有多个实例,这也支持查找最后一个实例

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


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

  • 如果后退,则到达数组的第一个(最左边)项所需的步骤数
  • 在满足数组的第一个(righmost)项之前,需要执行许多步骤
可以从
len(my_list)
中减去
my_list.index('b')
,然后在第一种情况下反转结果符号


在第二种情况下,我们翻转一个列表并对其应用
index
方法,因此
-(list(reversed(my_list)).index('b)+1)
-(my_list[::-1.)。index('b')+1)
生成它。第二种方法更常用。

我的列表。索引('b')-len(我的列表)
对不起,你能给我多一点信息吗?Phht!谢谢@superbrain!今天吸入的烟太多了。“我想现在已经修好了。”@ReaKalampaliki:你需要具体说明你需要什么样的信息。堆栈溢出不适用于开放式问题。是表格让我困惑。。经过这些变化,我开始理解数学微积分。谢谢,是的,但它仍然是不明确的。这是一个相反的例子,其中这些解释给出了不同的结果:
my_list=['a','b','c','b','c','a','c']
>>> (my_list.reverse(), ~my_list.index('b'), my_list.reverse())[1]
-2