python从列表中删除元素而不更改其他元素的索引

时间:2014-11-20 05:26:38

标签: python list

我有一个列表L = [a,a,b,b,c,c]现在我想先移除'b',以便L变为[a,a,b,c,c]。在新L中,第一个'c'的索引为3。我有什么方法可以从'b'中删除第一个L并仍然将第一个'c'的索引作为4。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

在保留其他元素的索引的同时,不可能完全删除元素,如示例所示。元素的索引代表它们在列表中的位置。如果您有一个列表[a, a, b, b, c, c]并删除了第一个b来获取[a, a, b, c, c],那么索引会进行调整,因为它们代表列表中元素的位置,这些元素随着元素的移除而发生了变化。

但是,根据您的用例,有一些方法可以通过使用不同的数据结构来获得所需的行为。例如,您可以使用整数字典到对象(列表中需要的任何对象)。例如,原始列表可以表示为{0: a, 1: a, 2: b, 3: b, 4: c, 5: c}。如果您删除了指数' (相反,使用键2),您将获得{0: a, 1: a, 3: b, 4: c, 5: c},这似乎是您正在寻找的行为。

答案 1 :(得分:0)

也许您可以使用pandas获得所需的效果:

>>> import pandas as pd
>>> L = ['a','a','b','b','c','c']
>>> df = pd.DataFrame(L)
>>> df
   0
0  a
1  a
2  b
3  b
4  c
5  c

[6 rows x 1 columns]
>>> df = df.drop(3)
>>> df
   0
0  a
1  a
2  b
4  c
5  c

[5 rows x 1 columns]
>>> df.loc[4]
0    c
Name: 4, dtype: object
>>> df.loc[5]
0    c
Name: 5, dtype: object