如何在python中从切片列表中获取原始索引?

如何在python中从切片列表中获取原始索引?,python,list,Python,List,当我有一个列表时,让我们说: l = [1,2,3,4,5] 我确实: l[1:] #Obtain [2,3,4,5] 或 但是,在切片之前,有没有办法从原始列表中获取原始索引,而不管列表的长度如何 换句话说,当我得到一个子列表时,我想得到它们的元素与原始列表相比属于哪些索引。对于您给出的每个切片符号,有一个更明确的等价物: l[1:] == l[1:len(l)] l[:-1] == l[0:len(l)-1] 要获取索引列表,您可以将这些数字输入到范围中: range(1, len(l

当我有一个列表时,让我们说:

l = [1,2,3,4,5]
我确实:

l[1:] #Obtain
[2,3,4,5]

但是,在切片之前,有没有办法从原始列表中获取原始索引,而不管列表的长度如何


换句话说,当我得到一个子列表时,我想得到它们的元素与原始列表相比属于哪些索引。

对于您给出的每个切片符号,有一个更明确的等价物:

l[1:] == l[1:len(l)]
l[:-1] == l[0:len(l)-1]
要获取索引列表,您可以将这些数字输入到
范围中

range(1, len(l))
range(0, len(l)-1)

不太清楚你在问什么,但是如果你有序列并且想知道它的原始索引,你可以假设序列是唯一的,你可以:


您的问题未解析为有效英语。你能把它换成更容易理解的话吗?也许可以提供您想要的示例输出。对不起,您的最后一句话毫无意义。你还想做什么?如果问题是“切片列表是否知道其原始索引”,那么答案是否定的。此外,如果@larsmans正确解释了这一点,那么用例是什么?如果您正在对列表进行切片,那么您肯定提前知道要切片的索引?为什么您需要动态地确定它们?您可以将不需要的索引中的项目替换为“无”,并每次检查它是否为“无”。否则就没有办法保存索引,因为切片后这是一个全新的列表。为什么
:len(l)
不会超出范围?@diegaoguilar因为切片不包括结束索引,就像
范围一样。嘿,假设我想从
[1,2,3,4,5]
获得一个新列表
[2,3,4,5]
[1,2,3,4]
从每一个获得
[3,4,5]
[2,3,4]
[2,3,4]
[1,2,3]
。。。一直到得到一个元素列表:[1]、[2]、[3]、[4]、[5]?在您的示例中,如果有重复的元素,会发生什么?所有元素都保持在其原始位置,重复的元素不会被删除。请参阅有关zip函数()的文档。
zip(范围(len(a)),a)
是按惯用方式编写的
enumerate(a)
range(1, len(l))
range(0, len(l)-1)
[(i, i+len(l)) for i in xrange(len(a)) if a[i:i+len(l)] == l]
>>> def printy(v):
...     for x, y in v:
...         print('Original index:', x, ', original element:', y)
... 
>>> # Original list
... a = [1, 2, 2, 4, 4, 4, 5, 0]
>>> with_original_indexes = tuple(zip(range(len(a)), a)) # or list()
>>> with_original_indexes = tuple(enumerate(a)) # Equivalent to the above
>>> printy(with_original_indexes)
Original index: 0 , original element: 1
Original index: 1 , original element: 2
Original index: 2 , original element: 2
Original index: 3 , original element: 4
Original index: 4 , original element: 4
Original index: 5 , original element: 4
Original index: 6 , original element: 5
Original index: 7 , original element: 0
>>> printy(with_original_indexes[1:5])
Original index: 1 , original element: 2
Original index: 2 , original element: 2
Original index: 3 , original element: 4
Original index: 4 , original element: 4
>>> printy(with_original_indexes[1:5][2:5])
Original index: 3 , original element: 4
Original index: 4 , original element: 4
>>>