2017-07-19 35 views
-1

從一個列表中獲取特定索引並從其他列表中刪除python的最快方法是什麼?從一個列表中取出特定索引並從其他列表中刪除的快速方法

a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
b = [nan, 'gfdg', 54.0, nan, 54.0, nan, 'wre', nan, 54, nan] 

我想從列表「B」以及類似的指數從列表「一」,使得預期的結果應該是刪除楠:

a = ['b', 'c', 'e', 'g', 'i' ] 
b = ['gfdg', 54.0, 54.0, 'wre', 54] 

回答

1

你可以試試:

a,b = zip(*(t for t in zip(a,b) if t[1] != nan)) 

事後使用a = list(a)b = list(b)如果你想要列表而不是元組。


>>> a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] 
>>> b = [nan, 'gfdg', 54.0, nan, 54.0, nan, 'wre', nan, 54, nan] 
>>> 
>>> a,b = zip(*(t for t in zip(a,b) if t[1] != nan)) 
>>> a 
('b', 'c', 'e', 'g', 'i') 
>>> b 
('gfdg', 54.0, 54.0, 'wre', 54) 
1

您可以使用list-comprehension要做到這一點,例如:

a = [a[i] for i in range(len(b)) if b[i] != nan] 
b = [x for x in b if x != nan] 

輸出:

>>> a 
['b', 'c', 'e', 'g', 'i'] 
>>> b 
['gfdg', 54.0, 54.0, 'wre', 54] 
相關問題