簡體   English   中英

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

[英]python remove element from list without changing index of other elements

我有一個列表L = [a,a,b,b,c,c]現在我要刪除第一個'b' ,以使L成為[a,a,b,c,c] 在新的L中,第一個'c'的索引為3 有什么辦法可以從L刪除第一個'b' ,但仍將第一個'c'的索引設為4 提前致謝。

如您的示例所示,在保留其他元素的索引的同時不可能完全刪除一個元素。 元素的索引表示它們在列表中的位置。 如果您有一個列表[a, a, b, b, c, c]並且刪除了第一個b以獲得[a, a, b, c, c]則索引會進行調整,因為它們表示元素在中的位置列表,隨着元素的刪除而改變。

但是,根據您的用例,可以使用多種方法通過使用不同的數據結構來獲得所需的行為。 例如,您可以對對象(列表中需要的任何對象)使用整數字典。 例如,原始列表可以改為表示為{0: a, 1: a, 2: b, 3: b, 4: c, 5: c} 如果將b移至“ index”(鍵為2),則會得到{0: a, 1: a, 3: b, 4: c, 5: c} ,這似乎是行為您正在尋找。

也許您可以通過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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM