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